0

每个屏幕的平板电脑应用程序分为四个部分(四个片段)。我在一个布局中添加了四个片段到片段事务。现在我必须在其中实现视图寻呼机。我怎样才能做到这一点。使用该视图寻呼机库,我必须将片段管理器和片段列表作为参数传递。在我的场景中,如何一次传递每 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();   }

这就是我将四个片段添加到屏幕的方式。现在只关注查看寻呼机。那么您能否告诉我如何使用带有示例代码的视图寻呼机来实现这一点。

我的 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。如果您拥有 4 个“可滑动”屏幕,每个屏幕作为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 和片段 - 存储片段状态的正确方法是什么?有关此的讨论)。

还有很多事情你需要考虑。如果片段不在屏幕上,你想保留它们吗?如果你只想要一些呢?查看FragmentStatePagerAdapterViewPager.setOffscreenLimit

于 2013-01-19T13:52:14.687 回答