0

Eclipse の最新の ADT リリースで新しいプロジェクトを作成したところ、作業を開始するために特定の環境がセットアップされることがわかりました。タブ + スワイプを選択します。

質問があるこのコードがあります:

 public static class DummyFragment extends Fragment {
    public DummyFragment () {
    }

    public static final String ARG_SECTION_NUMBER = "section_number";

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        TextView textView = new TextView(getActivity());
        textView.setGravity(Gravity.CENTER);
        Bundle args = getArguments();
        textView.setText(Integer.toString(args.getInt(ARG_SECTION_NUMBER)));
        return textView;
    }
}

両方のタブがこの同じフラグメントを参照しています。タブ位置番号 (1、2、または 3) を持つ TextView のコンテンツを切り替えるだけです。

  1. 最初のより高度な質問: タブが切り替わる 2 つの異なるフラグメントが必要です。サンプル コードでは、同じフラグメントを指しています。この変更はどこで行われますか? 簡単なコード例を見ることができますか?

  2. 簡単な質問: 各タブ (またはフラグメント) を設定したい 2 つの定義済み XML レイアウトがあります。実際のフラグメントでこれを行いますか? もしそうなら、どこで?onCreateView メソッドで setContentView が機能していないようですか?

4

1 に答える 1

2
  1. この質問が正確に何を求めているのかよくわかりませんが、TabHost(またはタブを管理するために使用しているものFragment)が複数のインスタンスをインスタンス化DummyFragmentし、タブがクリックされたときにそれぞれを画面にアタッチしていることが正しく理解できれば。これはすべて舞台裏で行われます...心配する必要があるのは、 を実装し、いつインスタンス化/表示する必要があるかFragmentを に伝えることだけです。TabHost

  2. Fragments にはメソッドがありませんsetContentViewFragmentの xml からレイアウトをインフレートする必要がありますonCreateView。たとえば、

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_layout, container, false);
    }
    
于 2012-07-15T03:25:04.680 に答える