gmailのようなアプリを書いています。実際、Honeycomb gmail アプリとまったく同じように、画面上で 2 つのペインをアクティブにしたいと考えています。
私の主なレイアウトは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="org.bicou.newsreader.SubscriptionsList"
android:id="@+id/fragment_left_list"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<FrameLayout android:id="@+id/fragment_middle_content" android:layout_weight="3"
android:layout_width="0px" android:layout_height="match_parent"
android:background="?android:attr/detailsElementBackground" />
<FrameLayout android:id="@+id/fragment_right_content" android:layout_weight="8"
android:visibility="gone"
android:layout_width="0px" android:layout_height="match_parent"
android:background="?android:attr/detailsElementBackground" />
</LinearLayout>
SubscriptionsList
Fragment は、読み込み時に、フレームfragment_middle_content
レイアウトに別のフラグメントを設定します。
2番目のフラグメントで何かをするとき、私はしたい:
- 隠れる
fragment_left_list
fragment_middle_content
左に置くfragment_right_content
3番目のフラグメントで表示します。
しかし、私はこれを行う方法がわかりません。上記の XML レイアウトと同様に、3 番目のフレーム レイアウトが非表示になっている (可視性 == なくなっている) ことがわかります。したがって、2番目のフラグメントで何かを行うと、次のようになります:
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
// Hide the left pane
SubscriptionsList sl = (SubscriptionsList) fm.findFragmentById(R.id.fragment_left_list);
ft.hide(sl);
// Show the right pane
OneItem oi = OneItem.newInstance(mEntries.get(position));
ft.replace(R.id.fragment_right_content, oi);
ft.show(oi);
getActivity().findViewById(R.id.fragment_right_content).setVisibility(View.VISIBLE);
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
これは一度機能します。プッシュ バックすると、バック スタックはフラグメント トランザクションを復元しますが、3 番目のフラグメントを隠しません。
適切なアプローチがないことはわかっていますが、3.0 プログラミング API にはまだ慣れていません。