1

Fragments(Android Developers)で説明されているものと同様のフラグメント階層を実装しています。ここに画像の説明を入力してください

縦向きのタブレットに加えて、アプリは2番目の場合と同じように動作する必要があります。私の問題は、オリエンテーションから他のオリエンテーションへのトランザクションを処理することです。

私が最初に考えたのは次のとおりです。

  • 横向きから縦向きへ:アクティビティAが縦向きになる場合:フラグメントBをビューに削除します。元のフラグメントBの状態を回復するための適切な値を渡す結果を得るために、アクティビティBを開始します
  • ポートレートからランドスケープへ:アクティビティBがポートレートに移行する場合。終了します(結果にフラグメント2ステータスが含まれます)。結果を含むアクティビティAは、フラグメントBを復元し、そのレイアウトに追加します。

しかし、この解決策はかなり複雑であり、おそらくそれは良い考えではないと思います。私が検討した代替ソリューションは、アクティビティを持つことだけです。そのアクティビティレイアウトは次のとおりです。

<FrameLayout>
    <LinearLayout>
       <Fragment A>
       <Fragment B>
    <Slot>

小型デバイスの場合:

  • アプリはフラグメントBを削除し、アイテムが選択されたら、フラグメントを「スロット」にバックスタックに追加します

タブレットの場合:

  • FragmentTransactionsを使用すると、フラグメントBがその位置から「スロット」に移動され、バックスタックを使用して方向の変更に対して適切に動作します。

2番目のオプションの方が良いと思いますが、これを行う正しい方法はありますか?

ありがとう

4

2 に答える 2

1

私のアドバイスが必要な場合、それはあまりにも多くの要因に依存すると思います。私はあなたがあなたが十分に扱いやすいと思うものに固執するべきだと思います。これは、アプリの画面フローがどれほど複雑かにも依存します。

管理するフラグメントがそれほど多くない場合は、1つのアクティビティに保持することをお勧めします。このアプローチの利点は、2つの異なるアクティビティのライフサイクルをいじくり回す必要がないことです。

とにかく、実装の複雑さを見つけることは、ある意味で、計画していることを将来管理できないことを示すものです。

お役に立てば幸いです。

于 2012-11-17T14:53:26.930 に答える
-1

どうしてこんなに複雑なやり方でやりたいのかわからない。タブレットで1つのアクティビティ、電話で2つのアクティビティがあります。最初のアクティビティで、リストフラグメントのアイテムがクリックされた場合に起動するリスナーを実装します。アクティビティは、シングルペインモードかデュアルペインモードかを認識しているため、onItemSelectedコールバックメソッド内で、シングルペインモードの場合は新しいアクティビティを開始するか、タブレットの場合はフラグメントを置き換えます。

新しいプロジェクトを作成するときにマスター/詳細テンプレートを使用して、これを確認することもできます。

于 2013-02-21T01:47:55.483 に答える