5

解決できない問題に遭遇しました。Google でいろいろ調べましたが、解決策が見つかりませんでした。

私のアプリには、3 ページを含む ViewPager があります。これらのページは本来あるべき断片です。これは問題なく動作します。ただし、これらのページのうち 2 つがマスター/詳細フローである必要があります (1 つは友達リスト用、もう 1 つはニュース フィード用)。Eclipse でマスター/詳細フローを作成すると、2 つのフラグメントと 2 つのアクティビティが作成されます。ItemListActivity (表示する必要があるもの) はフラグメントのコールバックを実装し、これはアクティビティですが、ViewPager はそれ自体の中でフラグメントのみを受け入れます。

質問は次のとおりです: ViewPager 内にマスター/詳細フローを配置するにはどうすればよいですか?

すべてのヘルプは大歓迎です! 私はここですべてのアイデアがありません。

ありがとう

4

1 に答える 1

11

マスター/詳細フローは、同じコンテンツ ビューで使用されている 2 つのフラグメントのニックネームです。1 つは左側に、もう 1 つは右側にあります。それが一般的な考え方です。現在、マスター/詳細フローは、アクティビティ内 (Eclipse が説明したテンプレートに対して行うように) またはフラグメント内で使用できます。幸いなことに、Android 4.2 が他のフラグメント内にフラグメントを導入したためです (これは、古いバージョンの Android 互換性ライブラリでもサポートされています)。 Androidの)。

Eclipse によって生成されたテンプレートは、アクティビティ (タブレットの場合) または 2 つのアクティビティ (携帯電話の場合) に含まれます。これは、フラグメント内にマスター/詳細が必要であることを Eclipse が認識していないためです。したがって、Eclipse のテンプレートに依存することはできません。しかし、別の Fragment 内に 2 つの Fragment を配置することはそれほど難しくありません。

しばらく ViewPager のことは忘れて、Master/Detail Flow を含む Fragment 内で作業を行う必要があります。これを MasterFragment と呼びましょう。

  1. さらに 2 つのフラグメントを宣言します: InnerListFragment、InnerDetailFragment。電話用の InnerDetailActivity もあります。
  2. MasterFragment の 2 つの XML レイアウト ファイルを宣言します。

    • layout/fragment_master.xml - この内部に InnerListFragment<fragment>タグのみを追加します
    • layout-sw600dp/fragment_master.xml (7 インチ以上のタブレット用) - InnerListFragment タグと InnerDetailFragment<fragment>タグの両方を追加します。
  3. ここですべての Java コードを詳しく説明することはしませんが、MasterFragment.java 内でデバイスがタブレットかどうかを確認して、2 つのフラグメントのどちらが画面上でアクティブであるかを確認する必要があります。

    • 電話の場合は、InnerListFragment のみが表示されます。したがって、リストを追加するだけで、onClickListener は InnerDetailFragment を配置する必要がある InnerDetailActivity を開始します。

    • タブレットの場合、両方の内部フラグメントが表示されます。リスト項目をクリックしたときに新しいアクティビティを開始しないでください。MasterFragment 内の両方のフラグメントへの参照を持っているだけで、それらの間で通信できるようになります。

それが一般的な考え方です。まだ質問がある場合は、質問してください。

于 2013-01-27T13:48:22.397 に答える