我们的应用程序使用嵌套对话框,并且通过从第一个对话框的 getContext()
方法构建对话框,我们已经成功地使一个对话框位于另一个对话框之上。所以:
Activity :
//...
Dialog1 dialog = new Dialog1(this);
dialog.show();
//...
对话 1:
//...
Dialog1(Context context) {
super(context);
//etc.
}
public void onSomeCondition() {
Dialog2 dialog2 = new Dialog2(getContext());
dialog2.show();
//etc.
}
但是,有一种情况是我们希望在 Dialog1 仍然可见的情况下直接从 Activity 启动 Dialog2。所以我们把这个方法放在Activity中:
public void onSomeOtherCondition() {
Dialog2 dialog = new Dialog2(this); //crunch
dialog.show();
//etc.
}
窗口管理器根本不喜欢这样。那么 getContext()
实际上与 Activity 中的 ContextWrapper
不完全相同吗?如果这个次要上下文与主要上下文究竟有何不同,并且(例如)如果您将 getContext()
从对话框传回给调用 Activity,这是否会产生与持有相同的泄漏风险on to a Context reference 别处可以做什么?
如果不是上下文,是什么导致了问题?
最佳答案
我怀疑当对话框 1 可见时从 Activity 1 启动对话框 2 的问题是因为对话框 1(而不是 Activity 1)位于 Activity 堆栈的顶部。我绝不是专家,但我怀疑只有 Activity 堆栈顶部的 Activity 才能启动新的 Activity。
关于android - Dialog.getContext() 和创建对话框的 Activity 之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7796074/