2

Android の開発を学んでいますが、フラグメントの UI を作成する方法がわかりません。新しいアクティビティを作成し、作成プロセス中にナビゲーション タイプ「タブ + スワイプ」を選択しました。今、私は WYSIWYG インターフェイスを使用して変更できないレイアウト xml を持っています。たとえば、クラス ファイルで Java を使用してボタン ウィジェットを作成すると、すべての「タブ ビュー」で作成されます。

基本的に、タブ (フラグメント) ごとに異なるインターフェイスを作成したいと考えています。

ありがとうございました

4

1 に答える 1

13

作成したばかりのアクティビティで、内部クラスを見つけることができますSectionsPagerAdapter。この方法を見てください:

@Override
public Fragment getItem(int i) {
    Fragment fragment = new DummySectionFragment();
    Bundle args = new Bundle();
    args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, i + 1);
    fragment.setArguments(args);
    return fragment;
}

すべてのタブのこのメソッドは、異なるバンドルのみを持つ DummySectionFragment のインスタンスを返します。タブごとに異なるビューでフラグメントを作成する場合は、i変数の値を確認し、この値に従って適切なフラグメントを作成する必要があります。例えば:

@Override
public Fragment getItem(int i) {
    Fragment fragment; 
    switch(i){
    case 0:
         fragment = new MyFragment1();
         break;
    case 1:
         fragment = new MyFragment2();
         break;
    case 3:
         fragment = new MyFragment3();
         break;
    default:
         throw new IllegalArgumentException("Invalid section number");
    }

    //set args if necessary
    Bundle args = new Bundle();
    args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, i + 1);
    fragment.setArguments(args);

    return fragment;
}

クラスの代わりにDummySectionFragment、MyFragment1、MyFragment2、MyFragment2 の 3 つのクラスを作成し、それぞれについて、メソッド内でonCreateViewビューを作成またはインフレートします。次に例を示します。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.my_fragment1.xml, null);
    return v;

}

R.layout.my_fragment1.xml は MyFragment1 フラグメントのレイアウトです。

于 2012-07-29T13:43:44.353 に答える