フラグメントと「複数デバイス対応」について勉強中です。デバイスの種類、向き、寸法に応じて、フラグメントを使用したり、記述されたコードを再利用したりして、複数のレイアウトを定義できます。アプリの開発中に、次のスクリーンショットで説明されているように、タブレット デバイスに必要な UI を書き留めました。
アクティビティには 2 つのフラグメントが含まれ、TAB メニュー ナビゲーションが表示されます。すべての TAB メニュー ナビゲーションには、異なるメニュー エントリ (リストビュー) が含まれています。フラグメント 1 のメニュー項目をクリックすると、フラグメント番号 2 を更新する必要があります。フラグメント 2 は、プレゼンテーションと、その下のリストビューまたは別のプレゼンテーションで構成されています。すべてのメニュー項目は異なるレイアウトを持つことができます:
- 1-プレゼンテーション、画像、別のプレゼンテーション
- 2-プレゼンテーションなし、リストビュー
- 3-プレゼンテーション、リストビュー
- 4等
google-sdk で提供されている例 (サンプル) を調べると、フラグメント 2 は常に同じレイアウトになっています。クリックされたメニュー項目に応じて異なるレイアウトをロードするようにフラグメント 2 に指示するにはどうすればよいですか?
私の答えは次のとおりです。さまざまなレイアウトごとにフラグメント クラスが必要です。ユーザーがフラグメント 1 の項目をクリックすると、フラグメント マネージャーは正しいフラグメントを置き換えてコミットする必要があります。この答えは正しいですか?
すべてのフラグメント ロジックがアクティビティに適用され、選択した項目 (位置とカテゴリ) に応じて正しいフラグメントが置き換えられます。簡単な例:
@Override
public void onItemSelected(int category, int position) {
if (position==0){
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.content_frag, new FirstActionFragment(), "FirstMenuClicked");
ft.commit();
}
else {
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.content_frag, new SecondActionFragment(), "secondMenuClicked");
ft.commit();
}
}
私のレイアウトのアイデアは改善可能ですか? 断片化を正しく実装するには、設計の何かを変更する必要がありますか?