DialogFragment не отображается как видимый при создании с помощью onCreateDialog

(Используя библиотеку совместимости)

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

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

dlg.show(getFragmentManager(), tag);

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

dlg.isVisible();

Это возвращает false.

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

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

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

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

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


person PJL    schedule 13.05.2011    source источник
comment
Мне удалось обойти это, добавив мой метод on visible () в мой подкласс DialogFragment, а затем вызвав isShowing () в AlertDialog, который я возвращаю в onCreateDialog (...). Конечно, мне не стоило этого делать.   -  person PJL    schedule 13.05.2011
comment
Теперь вы можете определить, отображается DialogFragment или нет? Может ответ обновите пожалуйста?   -  person Huy Tower    schedule 31.05.2014
comment
Я дал ответ, чем нуждается в обновлении?   -  person PJL    schedule 03.06.2014


Ответы (1)


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

boolean isShowing(DialogFragment dlg)
{
   return dlg.getDialog() != null;
}
person Shinyosan    schedule 04.11.2011