まあ、私は簡単な_<FrameLayout>
_を得ました:
_<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/FragmentContainer"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent" />
_
次に、私のコードで、フラグメントを追加しました:
_FragClass aFrag = new FragClass();
getSupportFragmentManager().beginTransaction()
.replace(R.id.FragmentContainer, aFrag).commit();
_
そして、私のコードのどこかで、ID _R.id.FragmentContainer
_からFragClass (extends Fragment)
オブジェクトを取得したいです。
私が試してみました
_((ViewGroup) findViewById(R.id.FragmentContainer)).getChildAt(0)
_
または
_((FrameLayout) findViewById(R.id.FragmentContainer)).getChildAt(0)
_
しかし、彼らはそれに添付されたView
の代わりにFragment
を返しています。
変数aFrag
をどこかに保持できることを知っているので、再度見つける必要はありません。しかし、それを取り戻す方法があるはずです。
完全な回答でまとめましょう:)
この場合、動的に追加されたFragment
は、コンテナーのIDを使用しますView
(ViewGroup
)。
参照: http://developer.Android.com/guide/components/fragments.html#Adding
注:各フラグメントには、アクティビティが再開された場合にシステムがフラグメントの復元に使用できる一意の識別子が必要です(これを使用して、フラグメントを取り除いてトランザクションを実行することができます)。フラグメントのIDを提供するには、次の3つの方法があります。
- Android:id属性に一意のIDを指定します。
- Android:tag属性に一意の文字列を指定します。
- 前の2つのどちらも指定しない場合、システムはコンテナビューのIDを使用します。
それはFragment
であるため、getSupportFragmentManager().findFragmentById()
を使用して取得する必要があり、findViewById()
の代わりにFragent
を返します。 View
。
したがって、この問題に対する答えは次のようになります。
((aFrag) getSupportFragmentManager().findFragmentById(R.id.FragmentContainer))
@ Luksprogに感謝します。