4

(互換性ライブラリを使用)

DialogFragmentを拡張してダイアログを実装しました。onCreateDialogのAlertDialog.Builderを使用してダイアログを作成します(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;
}

ビューがウィンドウにアタッチされていないためにmViewがnullであるため、呼び出しはfalseを返します。

ダイアログをどのように呼び出すか、またはそのためにダイアログを作成して、フラグメントのルートビューにアタッチする方法についてのアイデアはありますか?または、他にどのように可視性をチェックする必要がありますか?

よろしくお願いします、ピーター。

4

1 に答える 1

4

ダイアログ フラグメントが表示されているかどうかは、次のような関数で判断できます。

boolean isShowing(DialogFragment dlg)
{
   return dlg.getDialog() != null;
}
于 2011-11-04T22:33:29.957 に答える