-1

特定のことを表示して実行しているフラグメントがいくつかあるとします。今、いくつかのイベントに基づいて、フラグメントの画面 (またはコンテンツ) を変更したいと考えています。[編集]

例えば。

私の最初のレイアウト、レイアウト A にはリストビューがあります。もう 1 つのレイアウト、レイアウト B にはテーブル ビューがあります。現在、フラグメントにレイアウト A を表示しています。リスト項目をクリックすると、同じフラグメントにレイアウト B を表示したいと考えています。

これはどのように行われますか?

ありがとう。

4

2 に答える 2

1

私の最初のレイアウト、レイアウト A にはリストビューがあります。もう 1 つのレイアウト、レイアウト B にはテーブル ビューがあります。現在、フラグメントにレイアウト A を表示しています。リスト項目をクリックすると、同じフラグメントにレイアウト B を表示したいと考えています。

これはどのように行われますか?

新しいネストされたフラグメント API を使用できます (互換性パッケージと通常のフラグメント API 16 以降で利用可能)。Fragmentを保持するcurrent の代わりにListView(これをテーブルに置き換えます)、wrapperFragmentFrameLayout使用します。

ListView次に、 を含むフラグメントとテーブル レイアウトを含む 2 つのフラグメントを作成します。最初に、リスト ベースのフラグメントをラッパー フラグメントに追加して開始レイアウトを取得し、アイテム クリック イベントで を使用しgetChildFragmentManager()て、リスト ベースのフラグメントをテーブル ベースのフラグメント (すべてラッパー フラグメント内) に置き換えます。

于 2013-01-18T17:50:16.303 に答える
1

私があなたの質問を正しく理解していれば、これが私のやり方です。

リスト フラグメント (フラグメント A) とビュー フラグメント (フラグメント B) のフラグメント クラスを作成したと仮定します。

fragmentManager を使用して、レイアウト ビューでフラグメントを交換できます。

//grab fragmentManager, this will allow us to switch out fragments
FragmentManager fragManager = getFragmentManager();
FragmentTransaction fragTransaction = fragManager.beginTransaction();

//first remove the current fragment
fragTransaction.remove(fragManager.findFragmentById(R.id.layout_view));

//replace the current FragmentA with FragmentB
fragTransaction.replace(R.id.layout_view, new FragmentB());

//add to backstack if you want the android back button to work properly
fragTransaction.addToBackStack(null);

//and lastly, we commit the changes to the fragmentManger's transaction
fragTransaction.commit();

うまくいけば、これが役に立ちます。

于 2013-01-18T17:44:46.177 に答える