android - Dialog.getContext() 和创建对话框的 Activity 之间有区别吗?

标签 android android-activity dialog android-context

我们的应用程序使用嵌套对话框,并且通过从第一个对话框的 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/

相关文章:

javascript - 多个输入框 - alertifyjs/Jquery

android - 将 DatePicker 对话框的年份限制为仅当前年份

java - SearchBar 与 TabLayout 和 Viewpager。 SearchBar (EditText) 不会过滤用户,也不会过滤事件

Android 奇怪的跨设备行为

java - Android 中的 Activity 发生变化

android - 如何在 android 上的 Activity 标题中显示 'wait' 图标?

android - 如何确定 ImageView 上的长按监听器?

java - 如何在 Android 中为 Activity java 类和非 Activity java 类创建单独的文件夹

android - 将(打开/关闭)按钮添加到(打开/关闭)抽屉导航的 Activity

jquery - 具有自动宽度和自动高度的居中 jQuery 弹出对话框