我需要一个viewPager片段内内,但我有两个片段,片段1是我的菜单,和片段二:我想用一个ViewPagerIndicator ...如何设置ViewPager片段
但片段不能有另一个片段......我需要为此做些什么?
我需要一个viewPager片段内内,但我有两个片段,片段1是我的菜单,和片段二:我想用一个ViewPagerIndicator ...如何设置ViewPager片段
但片段不能有另一个片段......我需要为此做些什么?
从Android 4.2开始,有嵌套的片段。 http://developer.android.com/about/versions/android-4.2.html#NestedFragments支持库现在还包含对较旧Android版本的支持。
所以,你可以做这样的事情:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ViewPager mViewPager = (ViewPager) view.findViewById(R.id.viewPager);
mViewPager.setAdapter(new MyAdapter(getChildFragmentManager()));
}
完全实现可在这里:https://github.com/marcoRS/nested-fragments/tree/master/src/com/burnside/digital/nestedfragments
随着Android支持V4库,可以在另一片段中添加一个片段。尝试使用它,它可能可以解决您的问题。
但是是不可能的,因为我不能把我的FragmentActivity片段2的内部,由于片段父是FragmentActivity,和孩子(片段2)需要是一个fragmentActivity才能拥有这些选项卡......有一些想法? –
哦,但等等,你可以把2片段放入没有fragmentActivity的片段中,你知道吗?或者,也许你有你的理由去做... –
看过一些例子之后,你不能有一个fragmentActivity内FragmentActivity。 不需要有两个片段,这需要一个FragmentPageAdapter ...我只需要这样做。
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1" >
</android.support.v4.view.ViewPager>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:gravity="center"
android:measureWithLargestChild="true"
android:orientation="horizontal" >
<Button
android:id="@+id/first"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="First" >
</Button>
<Button
android:id="@+id/last"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Last" >
</Button>
</LinearLayout>
来源: http://www.truiton.com/2013/05/android-fragmentpageradapter-example/
必须使用getChildFragmentManager()
而不是getSupportFragmentManager()
得到FragmentManger
片段内。 但是,您不应该使用FragmentStatePagerAdapter
而不是FragmentPagerAdapter
。
谢谢,工作给我! –
这是可能的。尝试这样做代码view_pager_fragment.xml文件
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.TabLayout
android:id="@+id/tab"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
ViewPagerFragment
ViewPager viewPager;
TabLayout tabLayout;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tracks, container, false);
viewPager = (ViewPager) view.findViewById(R.id.viewpager);
tabLayout = (TabLayout) view.findViewById(R.id.tab);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setupViewPager(viewPager);
tabLayout.setupWithViewPager(viewPager);
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getChildFragmentManager());``
viewPagerAdapter.addFragment(new FirstFragment(), "First");
viewPagerAdapter.addFragment(new SecoundFragment(), "Secound");
viewPagerAdapter.addFragment(new LoginFragment(), "Login");
viewPager.setAdapter(viewPagerAdapter);
}
private class ViewPagerAdapter extends FragmentPagerAdapter {
List<Fragment> fragmentList = new ArrayList<>();
List<String> fragmentTitles = new ArrayList<>();
public ViewPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return fragmentTitles.get(position);
}
public void addFragment(Fragment fragment, String name) {
fragmentList.add(fragment);
fragmentTitles.add(name);
}
}
但是不可能,因为我不能把FragmentActivity放在我的片段2中,因为片段父是一个FragmentActivity,并且子(片段2)需要是一个fragmentActivity来有标签..并在github示例不要把一个片段内的其他片段。 –
为什么你甚至需要有片段1?你不能只有一个viewpager引用不同的碎片,然后在它下面有碎片2吗? –
但片段1总是相同的,这会看起来像变化,并不想这..一些想法? –