我们的应用程序使用嵌套的对话框,并且我们已经成功地通过从第一个对话框的getContext()
方法构建一个对话框位于另一个对话框的顶部。所以:Dialog.getContext()和创建对话框的Activity之间有区别吗?
活动:
//...
Dialog1 dialog = new Dialog1(this);
dialog.show();
//...
Dialog1:
//...
Dialog1(Context context) {
super(context);
//etc.
}
public void onSomeCondition() {
Dialog2 dialog2 = new Dialog2(getContext());
dialog2.show();
//etc.
}
但是,我们希望直接从活动启动Dialog2而Dialog1仍是可见的一种情况。所以我们把这个方法的活动:
public void onSomeOtherCondition() {
Dialog2 dialog = new Dialog2(this); //crunch
dialog.show();
//etc.
}
窗口管理器不喜欢这样的。那么它是不是getContext()
与活动中的ContextWrapper
-完全不一样?如果确实如此,次要上下文与主要上下文有什么不同,并且如果(例如)您从对话返回getContext()
到调用Activity,是否会产生与持有其他位置上的Context引用相同的泄漏风险?
如果不是上下文,是什么导致了问题?
几乎可以肯定,但它允许我们在之前的第一个对话框中打开第二个对话框(如下例所示:我们在Dialog1中创建Dialog2):没有问题)。如果可以的话,我们宁愿保留原来的一个,因为在这种情况下对用户更有意义(次要的是“加载...”类型的对话框)。这就是为什么我对上下文感兴趣以及它做什么的原因!谢谢:) –
我想我们可以在Activity中保留一堆'Dialog'对象,并确保我们从最上面的那个'getContext()'...? –
您可以将上下文传递到onSomeOtherCondition以创建对话框。这可能更容易。 –