Наше приложение использует вложенные диалоги, и мы успешно создали один диалог поверх другого, построив его из метода getContext()
первого диалога. Итак:
Активность:
//...
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 непосредственно из Activity, когда Dialog1 все еще виден. Итак, мы поместили этот метод в Activity:
public void onSomeOtherCondition() {
Dialog2 dialog = new Dialog2(this); //crunch
dialog.show();
//etc.
}
Менеджеру окон это совсем не нравится. Так что же, getContext()
на самом деле НЕ точно совпадает с ContextWrapper
-несс в Деятельности? Если именно так, как этот вторичный контекст отличается от первичного, и если (например) вы передали обратно getContext()
из диалога в вызывающую активность, это создаст тот же риск утечки, что и удержание ссылки на контекст в другом месте, может делать?
Если это не контекст, в чем причина проблемы?