onCreateViewとonViewCreated
なんか字面が似ているので違いを調べる
まず、公式ドキュメントを読んでみた
どちらもFragmentのメソッド
onCreateView
code:java
public @Nullable View onCreateView(
@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState
)
inflaterとcontainerとsavedInstanceStateの3つの引数を持ちnullableでViewを返す
フラグメントが初めてユーザー インターフェースを描画するタイミングでシステムがこれを呼び出します。
フラグメントの UI を描画するには、このメソッドからフラグメントのレイアウトのルートとなっている View を返す必要があ ります。null を返せば、フラグメントが UI を提示しないようにできます。
このメソッドでレイアウトを膨らませるだけにして、返されたViewを操作するロジックはonViewCreatedに移すことを推奨します。
つまりonCreateViewが先に行われて、onCreateViewで返されたViewをonViewCreatedで操作するっぽい
onCreateViewではレイアウトをinflateするだけにとどめるべきであるようだ
onViewCreated
code:java
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)
こちらはview(これはonCreateViewで返されたView)とsavedInstanceStateを引数にもつ
onCreateViewが返された直後、保存された状態がビューにリストアされる前にコールされます。これにより、サブクラスはビュー階層が完全に作成されたことを確認した後に、自分自身を初期化することができます。しかし、この時点ではフラグメントのビュー階層は親にアタッチされていません。
終盤何を言ってるのかよくわからん
onCreateViewで作成したViewに対して追加の初期化処理を行う
イベントリスナーの追加など
まとめ
onCreateViewの直後にonViewCreatedが実行される
onCreateViewではレイアウトをinflateして返すだけにする
onViewCreatedではonCreateViewで返されたViewに追加の初期化処理を行う