上部にいくつかのTextViewを含み、次に2つのフラグメントを左右に含むアクティビティを作成しようとしています。左側のフラグメントには、クリック可能なTextViewを備えたLinearLayoutが含まれています。これは、ユーザーが右側に表示されているフラグメントを判別できるようにするために使用されます。フラグメントを動的に切り替えることができるように、右側のフラグメントスペースを予約するにはどうすればよいですか?
私の現在の試みは次のようになります:main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/MainLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<!-- TextViews go here -->
<fragment
android:id="@+id/fragmentSelector"
android:name="com.metastable.android.pe.FragmentSelector"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignRight="@+id/empireNameTV"
android:layout_below="@+id/empireNameTV" />
<fragment
android:id="@+id/fragmentScreen"
android:name="com.metastable.android.pe.FragmentSummary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignTop="@+id/fragmentSelector"
android:layout_toRightOf="@+id/fragmentSelector" />
</RelativeLayout>
今のところfragmentSelectorは常に存在するので、アクティビティの作成時にロードしても問題ありません。問題は私のfragmentScreenにあります。現状では、FragmentSummaryが読み込まれますが、これを置き換えようとすると、レイアウトはバックグラウンドのままになり、その上に新しいFragmentが配置されます。置換の方法は次のとおりです。
public void onScreenSelected(int screen) {
Log.d("PE", "ScreenSelected called!");
if (screen == currentScreen)
return;
FragmentTransaction ft = fm.beginTransaction();
switch (screen) {
case SUMMARY:
ft.replace(R.id.fragmentScreen, fragmentSummary);
currentScreen = SUMMARY;
break;
case PLANET_MANAGER:
ft.replace(R.id.fragmentScreen, fragmentPlanetManager);
currentScreen = PLANET_MANAGER;
break;
}
ft.commit();
}
私の推測では、レイアウトからロードされたフラグメントを置き換えることはできないので、レイアウトのスペースを節約し、プログラムでフラグメントをロードする方法が必要です。任意の提案をいただければ幸いです。