我們的應用程序使用嵌套的對話框,並且我們已經成功地通過從第一個對話框的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以創建對話框。這可能更容易。 –