リストフラグメントと詳細ビューフラグメントの向きに応じて、デュアルペインとシングルペインを切り替えるアクティビティがあります
すなわち、Portrait: Single Pane = リスト フラグメント / 詳細フラグメント (項目が選択されている場合)
横: デュアル ペイン = リスト フラグメントと詳細フラグメント
次の使用例で上記のエラーが発生します。
- 縦長の単一ペインのリストで、アイテムをクリックして詳細フラグメントを起動します
- 画面を横向きに回転
- 例外!
何が問題なのかわかりません..何人かの人々が同様の問題を抱えているようですが、まったく同じかどうかはわかりません。
ここにいくつかのコードがあります:
デフォルトの activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
class="com.example.MyListFragment"
android:id="@+id/myListFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
ランドスケープ activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<fragment
class="com.example.MyListFragment"
android:id="@+id/myListFragment"
android:layout_weight="1"
android:layout_width="0px"
android:layout_height="match_parent"/>
<FrameLayout android:id="@+id/myDetailsLayout"
android:layout_weight="1"
android:layout_width="0px"
android:layout_height="match_parent" />
</LinearLayout>
MainActivity.Java で:
....
@Override
public void onMyItemSelected(DetailsItem item) {
Fragment newDetailFragment = new MyDetailFragment();
Bundle bundle = new Bundle();
bundle.putParcelable("details", item);
newDetailFragment.setArguments(bundle);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
if (dualPane){
ft.replace(R.id.myDetailsLayout, newDetailFragment);
}
else {
ft.replace(R.id.myListFragment, newDetailFragment);
}
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.addToBackStack(null)
.commit();
}
...