タブレットアプリにアクティビティがあり、向きに応じて異なるフラグメントを表示したいと思います。これを行う最も簡単な方法は、2つの異なるレイアウトXMLファイルを定義することであると考えました。1つは横向き用、もう1つは縦向き用です。言い換えれば、私は次のような/layout/home.xmlを持っています:
<LinearLayout android:orientation="horizontal">
<fragment class="com.foo.app.Frag1" android:id="frag1"/>
<fragment class="com.foo.app.Frag2" android:id="frag2"/>
</LinearLayout>
そして/layout-port/home.xmlで:
<LinearLayout android:orientation="vertical">
<fragment class="com.foo.app.Frag2" android:id="frag2"/>
<fragment class="com.foo.app.Frag3" android:id="frag3"/>
</LinearLayout>
私がそれを実行するとき、私は横向きから始めて縦向きに行くことができます、そしてすべてが大丈夫です。ただし、縦向きから横向きに移行すると、リソースIDが「frag3」のandroid.content.res.Resources$NotFoundExceptionでアプリがクラッシュします。そうです、ランドスケープメイドに行くときにFrag3を探しています、そしてそのモードにはFrag3はありません。これはActivity.onCreateスタック中に発生するため、コードがアプリをクラッシュさせる前に発生します。
フラグメントはこのように機能するはずではありませんか?代わりにFragmentTransactionを使用する必要がありますか?