0

LayoutInflater は、非常に優れた機能を備えた非常に強力なツールです。たとえば、レイアウト リソースから Fragment をインフレートし、そのライフサイクルを適切に処理します。例えば:

<fragment class="com.test.TestFrag".../>

上記のレイアウトを取得して LayoutInflater で実行すると、Fragment によって生成されたビューが得られます。次に、このビューを任意の ViewGroup に追加し、フラグメントのライフサイクルに引き続き従うフラグメントのインスタンスを実行できます。私の質問は、この作成されたビューから親 Fragment を取得するにはどうすればよいですか?

4

1 に答える 1

0

実行時に、どの ViewGroup がそれをホストしているかをフラグメントが認識するためのメカニズムは実際にはありません。とはいえ、クラスは基本 Fragment クラスを拡張するため、親の ID を追跡するために Fragment にインスタンス変数を追加することを妨げるものは何もありません。FragmentTransaction を使用してフラグメントをビュー階層に追加する場合、FragmentTransaction::add にはフラグメントを含む ViewGroup の ID が必要なため、フラグメントをホストするコンテナーを指定する必要があります。XML タグを使用して ViewHierarchy に追加している場合、とにかく動的に追加されていないため、実行時にその親を決定する必要がある理由がわかりません。

于 2012-11-01T18:53:50.873 に答える