1つのアクティビティ ( MyActivity ) に2 つのフラグメント ( MyListFragment、MyDetailFragment ) があります。最初のフラグメントは項目のリストで、2 番目のフラグメントは項目の詳細です (これは別のリストですが、問題ではないと思います)。MyActivityが開始されると、最初のリスト フラグメントが表示されます。
MyListFragmentビュー:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<fragment class="myapp.ActionsList"
android:id="@+id/actions_list_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
MyDetailFragmentビュー:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ListView
android:id="@android:id/list"
android:tag="@string/activities_list_tag"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
MyListFragment には、 MyDetailFragmentを開くMyActivityのメソッドを呼び出すクリック ハンドラがあります。
@Override
public void onActionSelected(MAction action, Integer position){
/**some code...*/
getFragmentManager().beginTransaction()
.replace(R.id.fragment_container,
new MyDetailFragment(mAction,position)).commit();
}
問題は:
MyListFragmentの項目をクリックしても、MyDetailFragmentは表示されません (ただし、ライフサイクル メソッドが適切に呼び出されることはわかっています)。
MyListFragmentのフラグメント定義にandroid:layout_weight="1"を配置すると、機能することがわかりました。理由を知っている人はいますか?
私は android:layout_weight プロパティを理解しているので、LinearLaoyout にもっと多くのビューがある場合にのみ何らかの役割を果たすはずですが、私は 1 つしか持っていません。
これは作業レイアウトです:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<fragment class="myapp.ActionsList"
android:id="@+id/actions_list_fragment"
**android:layout_weight="1"**
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
ありがとう