每个屏幕的平板电脑应用程序分为四个部分(四个片段)。我在单个布局中添加了四个片段到片段事务。现在我必须实现视图寻呼机。我怎样才能做到这一点。使用该视图分页器库我必须将片段管理器和片段列表作为参数传递。在我的场景中如何一次传递每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(); }
这就是我将四个片段添加到屏幕的方式。现在我只是在查看寻呼机。那么请告诉我如何使用带有示例代码的view pager实现这一目标。
我的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>
答案 0 :(得分:0)
您根本不需要使用FragmentTransactions
。如果您希望将每个屏幕的4个'可切换'屏幕设为Fragment
,请查看FragmentPagerAdapter。
您想要的主要内容是从XML获取ViewPager
:
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 and fragments — what's the right way to store fragment's state?)。
您还需要考虑很多事情。如果它们在屏幕外,你想保留片段吗?如果你只想要一些呢?查看FragmentStatePagerAdapter和ViewPager.setOffscreenLimit