1 つのアクティビティ内に複数のフラグメントがあります。
アプリを小さな画面と大きな画面の両方に対応させようとしています。
LinearLayout をルートとしてメイン レイアウトを作成しました。この LinearLayout には 2 つの FrameLayout が含まれています。1 つの FrameLayout は、リストまたはその他の詳細を格納する Fragments を格納するために使用されます。特定のボタンが押されたときにのみこれを表示したい。
もう 1 つの FrameLayout は、独自のフラグメントにあるアプリの主要部分 (マップ) を表示するために使用されます。
まず、次を使用してメイン マップ フラグメントを追加します。
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.viewer, viewModeFragment);
ft.commit();
サイド パネルにリスト フラグメントを表示する場合は、次のように呼び出します。
FrameLayout fl = (FrameLayout)findViewById(R.id.list);
fl.setVisibility(View.VISIBLE);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.list, editOsmInfoFragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack(null);
ft.show(editOsmInfoFragment);
ft.commit();
メインのアクティビティ レイアウトの XML ファイルは次のとおりです。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<FrameLayout
android:id="@+id/list"
android:name="com.srose.cyclopathed.view.LoadRoutesFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:visibility="gone"/>
<FrameLayout
android:id="@+id/viewer"
android:name="com.srose.cyclopathed.view.ViewModeFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2" />
</LinearLayout>
これはうまくいくようですが、主な問題は、タブレットでアプリを使用し、サイドバーに含まれるリストフラグメントが表示され、戻るボタンを押すと、フラグメントが期待どおりに消えますが、空白のリスト FrameLayout です。トランザクションの一部ではないため、画面に残ります。
私はこれを適切に使用していないと思いますが、戻るボタンの左にあるサイドバー全体のスライドが押されるように実装する方法がわかりません。
誰でも助けてもらえますか?ありがとう