Fragments(Android Developers)で説明されているものと同様のフラグメント階層を実装しています。
縦向きのタブレットに加えて、アプリは2番目の場合と同じように動作する必要があります。私の問題は、オリエンテーションから他のオリエンテーションへのトランザクションを処理することです。
私が最初に考えたのは次のとおりです。
- 横向きから縦向きへ:アクティビティAが縦向きになる場合:フラグメントBをビューに削除します。元のフラグメントBの状態を回復するための適切な値を渡す結果を得るために、アクティビティBを開始します
- ポートレートからランドスケープへ:アクティビティBがポートレートに移行する場合。終了します(結果にフラグメント2ステータスが含まれます)。結果を含むアクティビティAは、フラグメントBを復元し、そのレイアウトに追加します。
しかし、この解決策はかなり複雑であり、おそらくそれは良い考えではないと思います。私が検討した代替ソリューションは、アクティビティを持つことだけです。そのアクティビティレイアウトは次のとおりです。
<FrameLayout>
<LinearLayout>
<Fragment A>
<Fragment B>
<Slot>
小型デバイスの場合:
- アプリはフラグメントBを削除し、アイテムが選択されたら、フラグメントを「スロット」にバックスタックに追加します
タブレットの場合:
- FragmentTransactionsを使用すると、フラグメントBがその位置から「スロット」に移動され、バックスタックを使用して方向の変更に対して適切に動作します。
2番目のオプションの方が良いと思いますが、これを行う正しい方法はありますか?
ありがとう