Fragment
を典型的なリスト/詳細設計パターンで適切に管理する方法について、私は頭を悩ましています。単一/二重ウィンドウレイアウトでUIの状態とバックスタックを管理する方法
:私は
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@+id/container" ... />
:ポートレートビュー(シングルペイン)のための
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout ... >
<FrameLayout android:id="@+id/list" ... />
<FrameLayout android:id="@+id/container" ... />
</LinearLayout>
そして、このような適切なレイアウトがデバイスの画面幅に基づいてロードされていることを確認するためにrefs.xml
をres/values-w600dp/
にも設定してください。
リストアイテムを選択すると、横長ビューにはリストと詳細が並べて表示され、縦長ビューには詳細の全画面のみが表示されます。何も選択されていない場合、横長ビューは左に、空白は右に表示する必要があります。縦長ビューにはリスト全体が表示されます。
私は悩みを抱えているところが、ここにあります:
は私がリスト+オプションの詳細なレイアウトのための「メイン」
Activity
を使用し、ために別の「詳細」Activity
くださいポートレート、詳細のみのレイアウト?これは、Fragments guideの例のようです。私は一般的にこのように働くことを約束しましたが、オリエンテーションが変わったときに私の細部の断片の状態をどうやって維持していますか?は、反対の場合は、上に示した検討 - 詳細が表示されながら、肖像画から風景に回転するメイン
Activity
は、2つのペインのレイアウトを表示することができるように詳細Activity
はfinish()
EDであることが必要であろう意味し、これはまた、詳細を破壊しますフラグメントおよびそのsavedInstanceState
。ユーザーが詳細フラグメント内のEditText
フィールドに情報を入力した後、デバイスをローテーションすると、メインセクション(2ペイン)Activity
に追加すると、詳細フラグメントのUI状態全体をどのように保持できますか?Activity
を1つだけ使用して、自分でFragment
を管理しますか?これにより、オリエンテーションが変更されたときに詳細UIの状態を保持することができます(Androidはこれを自動的に処理するため)、バックスタックになると乱雑になります。詳細が表示されているときに風景から肖像画に回転している場合を考えてみましょう。詳細を表示するにはどうすればよいですか?バックスタックを適切に管理するにはどうすればいいですか?
ActionBar
ホームアイコンは、窓?ランドスケープに戻すと、両方のフラグメントが同時に表示されるため、以前に行ったバックスタック操作を元に戻す必要があります。いくつかのより多くの検索後
、私は2つの類似の質問(Switch from dual pane to single pane on orientation change maintaining fragment stackとRetain Fragment state between Activities)を見つけましたが、私はこの機能が、フロントアップ、それのために最適なプランを改造しようとしていないよので、私の状況は少し異なります。私は何が欠けていますか?確かにアンドロイドは、複数のバックスタック(Activity
の複数の場合)との両方を一度にUI状態(単一のActivity
の場合のように)で管理できますか?