2017-02-04 9 views
0

どこでも閲覧できます:Activityライフサイクルで独立している可能性があるので、どこでもFragmentDialogを使用してください。しかし、一般に、ダイアログは非常に頻繁に非同期的に表示されるべきです。ただし、非同期コールバックからFragmentManagerにコミットすることはお勧めしません。それに対処する方法?DialogFragments and Dialogs Android

答えて

0

あなたが言いましたように、あなたの活動をダイアログと疎結合させるのに役立ちますので、DialogFragmentを使用してください。はい、ダイアログを非同期で表示する必要がある場合があります。そのような場合には、対話呼び出しコードをこのインスタンスでダイアログを表示するかどうかを示すホストコンポーネントのメソッド呼び出しでラップします。

- あなたはフラグメント内のショーを呼び出している場合は、と示すために、呼び出しをラップし、

if(!isDestroyed() && !isFinishing())

- あなたはアクティビティ内のショーを呼び出す場合

、と示すために、呼び出しをラップif (isResumed() && !isRemoving())

これは、多かれ少なかれ矛盾したUI状態

+0

に着陸の問題を解決することではありません正しい。アクティビティが停止していると仮定しましょう(別のアクティビティはフォアグラウンドなので)。さて、 'isDestroyed()'は 'false'を返します。' isFinshing() 'はfalseを返します。だから、私たちはブランチをとり、FragmentManagerにコミットします。例外! onSave()の後にFragmentManagerにコミットしようとしています。 –