1. ホーム
  2. android

[解決済み] フラグメントにおけるonCreate()、onCreateView()、onActivityCreated()の違いと使い分けについて

2022-03-15 03:08:10

質問

とはどのような違いがあるのでしょうか? onCreate() , onCreateView() および onActivityCreated() を断片化し、それぞれ何に使うのか?

どのように解決するのですか?

UPDATEしてください。

onActivityCreated() は、API Level 28 から非推奨とする。


onCreate()を使用します。

onCreate() メソッドの中で Fragment の後に呼び出されます。 Activity 's onAttachFragment() が、その前に Fragment 's onCreateView() .
このメソッドでは、変数を代入して Intent を追加し、さらに View の階層に関係しないものであれば、何でも構いません。 (すなわち、非グラフィカルな初期化)。これは、このメソッドが Activity 's onCreate() が終了していないため、ここでView階層にアクセスしようとすると、クラッシュする可能性があります。

onCreateView() を使用します。

の後に onCreate() が呼び出されます( Fragment ) を使用すると Fragment 's onCreateView() が呼び出されます。を割り当てることができます。 View 変数と グラフィカルな初期化を行う . を返すことが期待されています。 View このメソッドから、これがメインのUIビューになるのですが、もしあなたの Fragment はレイアウトやグラフィックを一切使用しないので、その場合は null (オーバーライドしない場合、デフォルトで発生します)。

onActivityCreated() を使用します。

名前の通り、これは の後に呼び出されます。 Activity 's onCreate() が完成しました。 . の後に呼び出されます。 onCreateView() 主に最終的な初期化(例えば、UI要素の変更)に使用されます。これは 非推奨 をAPIレベル28から導入しました。


要約すると...
... それらはすべて Fragment が、異なるタイミングで呼び出されます。
onCreate() が最初に呼び出され、グラフィカルでない初期化が行われます。次に View で使用したい変数を onCreateView() . その後 onActivityCreated() を使って、すべてが完了した後に行いたい最終的な初期化を行ってください。


Androidの公式ドキュメントをご覧になりたい方は、こちらをご覧ください。

また、少し違いますが、あまり発展していない質問/回答がStack Overflowのここにあります。