0

フラグメントと「複数デバイス対応」について勉強中です。デバイスの種類、向き、寸法に応じて、フラグメントを使用したり、記述されたコードを再利用したりして、複数のレイアウトを定義できます。アプリの開発中に、次のスクリーンショットで説明されているように、タブレット デバイスに必要な 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();
        }
  }

私のレイアウトのアイデアは改善可能ですか? 断片化を正しく実装するには、設計の何かを変更する必要がありますか?

4

1 に答える 1