Fragment
典型的なリスト詳細デザインパターンでsを適切に管理する方法に頭を悩ませています。
私のレイアウトは正常に機能しており、横向きのビュー(デュアルペイン)では次のように構成されています。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout ... >
<FrameLayout android:id="@+id/list" ... />
<FrameLayout android:id="@+id/container" ... />
</LinearLayout>
そして、ポートレートビュー(単一ペイン)の場合は次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@+id/container" ... />
また、デバイスの画面幅に基づいて適切なレイアウトが読み込まれるようにするための情報refs.xml
もあります。res/values-w600dp/
リストアイテムを選択すると、横向きのビューにはリストと詳細が並べて表示され、縦向きのビューには詳細のみが全画面表示されます。何も選択されていない場合、横向きのビューでは左側に左側、右側に空白のスペースが表示され、縦向きのビューではリストのみが全画面表示されます。
しかし、ここで私は問題を抱えています:
リスト+オプションの詳細レイアウトに「メイン」を使用し、縦向きの詳細のみのレイアウトに
Activity
別の「詳細」を使用しますか?Activity
これは、フラグメントガイドの例が行うことのようです。このアプローチは一般的に機能するようになりましたが、向きが変わったときに詳細フラグメントの状態を維持するにはどうすればよいですか?上記の反対のケースを考えてみましょう。詳細が表示されているときに縦向きから横向きに回転すると、メインが2ペインのレイアウトを表示できるように詳細を編集
Activity
する必要がありますが、これにより詳細フラグメントとそのも破壊されます。ユーザーが詳細フラグメントのフィールドに情報を入力してからデバイスを回転させた場合、メイン(2ペイン)に追加するときに詳細フラグメントのUI状態全体を保持するにはどうすればよいですか?finish()
Activity
savedInstanceState
EditText
Activity
1つだけ使用し
Activity
て、自分で管理しFragment
ますか?これにより、向きが変わったときに詳細UIの状態を保持できます(Androidがこれを自動的に処理するため)が、バックスタックになると面倒になります。画像の場合を考えてみましょう。詳細が表示されているときに横から縦に回転すると、詳細が単一ペインで表示されますが、バックスタックと
ActionBar
ホームアイコンを適切に管理してリストを単一ペインで表示するにはどうすればよいですか?横向きに戻すと、両方のフラグメントが同時に表示されるため、以前に行ったバックスタック操作を元に戻す必要があります。
さらに検索したところ、2つの同様の質問が見つかりました(フラグメントスタックを維持する方向変更でデュアルペインからシングルペインに切り替え、アクティビティ間でフラグメント状態を保持する)が、この機能を改良しようとはしていないので、状況は少し異なりますが、事前に計画してください。私は何が欠けていますか?確かに、Androidはバックスタック(複数のActivity
場合のように)とUIの状態(単一のActivity
場合のように)の両方を一度に管理できますよね?