0

タブレット用アプリは、画面ごとに 4 つのパーツ (4 つのフラグメント) に分割されています。1 つのレイアウトに 4 つのフラグメント間トランザクションを追加しました。ここで、ビューページャーを実装する必要があります。どうすればそれを達成できますか。そのビュー ページャー ライブラリを使用して、フラグメント マネージャーとフラグメント リストを引数として渡す必要があります。私のシナリオでは、4つの引数を一度に渡すにはどうすればよいですか?

私の主な活動は:

> public void onCreate(Bundle savedInstanceState) {
>       super.onCreate(savedInstanceState);
>       setContentView(R.layout.activity_main);         NewsFragment[]
> newsFragment_obj = new NewsFragment[GlobalValues.titile.length];
> 
>       fragMentTra = getFragmentManager().beginTransaction();
> 
>       for (int i = 0; i < GlobalValues.titile.length; i++) {
>           newsFragment_obj[i] = new NewsFragment(GlobalValues.titile[i],
>                   GlobalValues.content[i]);       }
> 
>       fragMentTra.add(R.id.fragment_container1, newsFragment_obj[0],
>               "Fragment1");       fragMentTra.add(R.id.fragment_container2, newsFragment_obj[1],
>               "Fragment2");       fragMentTra.add(R.id.fragment_container3, newsFragment_obj[2],
>               "Fragment3");       fragMentTra.add(R.id.fragment_container4, newsFragment_obj[3],
>               "Fragment4");
> 
>       fragMentTra.commit();   }

これが、4 つのフラグメントを画面に追加した方法です。現在、ビューページャーのみを調べています。サンプルコード付きのビューページャーでそれを達成する方法を教えてください。

私のXMLファイルは次のとおりです。

<LinearLayout
    android:id="@+id/upper"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/up_left_area"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:background="#ffff66" >

        <FrameLayout
            android:id="@+id/fragment_container1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/up_right_area"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:background="#ccffff" >

        <FrameLayout
            android:id="@+id/fragment_container2"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
    </LinearLayout>
</LinearLayout>

<LinearLayout
    android:id="@+id/lower"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/down_left_area"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:background="#66cc33" >

        <FrameLayout
            android:id="@+id/fragment_container3"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/down_right_area"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:background="#cc6600" >

        <FrameLayout
            android:id="@+id/fragment_container4"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
    </LinearLayout>
</LinearLayout>

4

1 に答える 1

0

使う必要は全くありませんFragmentTransactions。各画面Fragment.

必要な主なことはViewPager、XML から取得することです。

mPager = (ViewPager)findViewById(R.id.pager);

FragmentPagerAdapter次に、フラグメントの構造を拡張FragmentPagerAdapterおよび定義してカスタムを作成します。

public static class MyAdapter extends FragmentPagerAdapter {
    public MyAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        return NUM_ITEMS; // In this case, 4
    }

    @Override
    public Fragment getItem(int position) {
        // This is basically just making a new Fragment
        // e.g. if (position == 0) return new FirstPageFragment()
        return ArrayListFragment.newInstance(position);
    }
}

次に、アダプターを作成します。

mAdapter = new MyAdapter(getSupportFragmentManager());

次に、アダプターを次のように設定しますViewPager

mPager.setAdapter(mAdapter);

これには多くの落とし穴があります。たとえば、ViewPagerはフラグメント タグの設定を処理するため、Activity の再作成には十分に注意する必要があります ( ViewPager とフラグメント — フラグメントの状態を保存する正しい方法は?を参照してください)。

また、考えなければならないこともたくさんあります。フラグメントが画面外にある場合、フラグメントを保持しますか? 少しだけ欲しい場合はどうしますか?FragmentStatePagerAdapterとViewPager.setOffscreenLimitを調べる

于 2013-01-19T13:52:14.687 に答える