プラニャーニの答えは近いですが、教育的な価値はほとんどありません。その上、彼の 2 番目のステートメントには、より適切なオプションがあります。
このコードをフラグメントのどこに配置すればよいですか? onCreate()? onCreateView()? onActivityCreated()? なぜ?
簡単に言えば、どちらかまたはどちらonCreateView()
かonActivityCreated()
です。ビュー階層は まで作成されないため、フラグメントのライフ サイクルの最も早い時点で、ビューを拡張してonCreateView()
クリック リスナーなどをアタッチできます。たとえば、フラグメントを保持する場合など、フラグメントを一時的に切り離して再接続するシステムを優先して、スキップすることができます。onActivityCreated()
onCreateView()
onCreate()
フラグメントのビューを膨張させることは、アクティビティのビューを膨張させることとはわずかに異なることを指摘することで、Pragnani は正しいです。より具体的には、フラグメントはメソッドを定義しないため、findViewById()
他のオブジェクトで呼び出す必要があります。
を使用するのではなくgetActivity().findViewById()
、 が必要になりgetView().findViewById()
ます。これは、アクティビティをビュー ルックアップに使用すると、同じビュー ID を持つ複数のフラグメントがアタッチされたときに問題が発生するためです。これは、さまざまなフラグメントのレイアウトでビュー ID を再利用する場合、または異なるデータを表示する 2 つの同一のフラグメントを表示する場合に当てはまります。どちらの場合も、最初の一致のみが返されますが、実際にはフラグメントのコンテキストでビューを検索する必要があります。これがまさにgetView()
フラグメントのルート ビュー ( で返されたものonCreateView()
) を返すため、ルックアップの範囲を適切に制限します。