DialogFragment не виден как видимый при создании с помощью onCreateDialog - PullRequest
4 голосов
/ 13 мая 2011

(с использованием библиотеки совместимости)

Я реализовал диалог с расширением DialogFragment. Я создаю диалог, используя AlertDialog.Builder в onCreateDialog (onCreateView не используется).

В моем фрагменте я вызываю диалог с:

dlg.show(getFragmentManager(), tag);

Однако, когда я прихожу проверить видимость, как только диалоговое окно становится ясно видимым, используйте

dlg.isVisible();

Это возвращает ложь.

Теперь приведен код Fragment :: isVisible из источников совместимости.

final public boolean isVisible() {
    return isAdded() && !isHidden() && mView != null
            && mView.getWindowToken() != null && mView.getVisibility() == View.VISIBLE;
}

Вызовы возвращают false, поскольку mView имеет значение null, поскольку представление не прикреплено к окну

Есть какие-нибудь идеи относительно того, как мне следует вызывать диалог или создавать его в этом отношении, чтобы он был прикреплен к корневому представлению фрагмента? Или как еще я должен проверять видимость?

Заранее спасибо, Питер.

1 Ответ

4 голосов
/ 05 ноября 2011

Вы можете определить, отображается ли фрагмент диалога с помощью функции, подобной:

boolean isShowing(DialogFragment dlg)
{
   return dlg.getDialog() != null;
}
...