最近私は断片を多く使っていましたが、フラグメントの親アクティビティへの参照を使用するのがベストプラクティスであるかどうか不思議でした。 onActivityCreatedコールバックでgetActivity()を呼び出すか、parentActivity変数を初期化したほうがよいでしょうか。フラグメントの親アクティビティーを参照するベストプラクティス?
12
A
答えて
17
これは実際にFragmentsの公式のAndroidドキュメントに含まれています。親アクティビティのコンテキスト(Toast、Dialogなど)が必要な場合は、getActivity()
とします。 Fragmentのインターフェイスでコールバックメソッドを呼び出す必要がある場合は、onAttach(...)
でインスタンス化されたコールバック変数を使用する必要があります。
public static class FragmentA extends ListFragment {
ExampleFragmentCallbackInterface mListener;
...
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
mListener = (ExampleFragmentCallbackInterface) context;
} catch (ClassCastException e) {
throw new ClassCastException(context.toString() + " must implement ExampleFragmentCallbackInterface ");
}
}
...
}
8
getActivity()が最適です。ストアする変数を保持する必要はありません(常に、アプリサイクルまで!)。必要であれば、メソッドを呼び出して! :)
-2
あなたがフラグメントである場合は、)(getActivityを呼び出すことができます。または、フラグメント内にある場合は、getApplicationContext()。getContext();を呼び出すこともできます。ほとんどの場合、getActivity()は必要なすべてを行います。
関連する問題
- 1. ベストプラクティス:フラグメント間のアンドロイドデータベース参照の管理
- 2. メイン・アクティビティーの一部である子フラグメントから親フラグメントにデータを送信
- 3. プロジェクトを参照するベストプラクティス
- 4. 親アクティビティーからViewPagerのフラグメントへのアクセスID
- 5. アクティビティーからフラグメント、別のフラグメントへ移動
- 6. ナビゲーション・ドロワー・アクティビティー、フラグメントを送信
- 7. 子フラグメントへの参照を取得する親フラグメントを再作成した後のフラグメント
- 8. SASS - 親の参照親
- 9. Flink参照データのアドバイス/ベストプラクティス
- 10. 親アクティビティーに影響を与えるフラグメントからの接触を防ぐ方法
- 11. ViewPager内でフラグメントを参照する
- 12. ライブラリーからアクティビティーの参照を検索し、アクティビティーを終了(終了)する方法は?
- 13. ダイアログフォームの「親」フォームを参照
- 14. 子+親参照SQL
- 15. UserControlで親のResourceDictionaryを参照する
- 16. アクティビティーからTabLayout/ViewPagerフラグメントへのナビゲート
- 17. 親スコープへの参照エラー
- 18. 参照親ウィンドウのドキュメント
- 19. 参照親ウィンドウのFCKeditorAPI(2.0)
- 20. Gridview templatefieldの親ロー参照?
- 21. ココアで親を参照する
- 22. 子変数を参照する親クラス
- 23. 親クラスを参照する方法?
- 24. 親スタイルを参照するSass mixin
- 25. 親の参照を見つける
- 26. Thymeleafフラグメントに渡される参照オブジェクト
- 27. 親アクティビティーが破棄されたときにアクティビティーを保持する方法
- 28. 親クラスへの参照を戻すC++
- 29. 親の親を正しく参照する方法は?
- 30. アクティビティからのフラグメントの参照
これを実装するには、FragmentCallbackInterfaceを使用することをおすすめします。 –
@James:getActivity()を使用するよりもこのアプローチが優れている理由を説明してください。場合によってはgetActivity()がnullを返し、アプリケーションがクラッシュすることがあります。上記の方法を使用することで、アプリがクラッシュしないことを確実にすることができますか?ありがとう。 – Rajat
getActivity()がnullを返す場合、まだ接続されていないので、 'mListener'もnullになります。このアプローチは 'getActivity()'を使用するよりも優れています。なぜなら、あなたがアタッチされているアクティビティがフラグメント内のコンテンツを操作するために必要なインタフェースを実装していることを保証するからです。 –