我遇到了ViewPager的问题。我正在使用FragmentActivity,我在FragmentActivity中添加了多个片段,如下所示。
public void addFragment(Fragment fragment, boolean addToBackStack, int transition) {
FragmentTransaction ft = getFragmentManager().beginTransaction().setCustomAnimations(R.anim.slide_up,R.anim.slide_down,R.anim.slide_up,R.anim.slide_down);
ft.replace(R.id.main, fragment);
ft.setTransition(transition);
if (addToBackStack)
ft.addToBackStack(null);
ft.commit();
}
我在片段中使用ViewPager。加载FragmentActivity时,ViewPager工作正常。但是当我使用另一个片段时,ViewPager变得不可见。
例如
a。)片段A 与ViewPager
b。)片段B 没有ViewPager
运行App时,片段A 正常工作。当我去片段B 然后我再次将片段B替换为片段A然后ViewPager不起作用。我看到我使用ViewPager的空白视图。
请告诉我如何解决此问题
由于
答案 0 :(得分:7)
我自己解决了问题,当您使用片段内的ViewPager
使用getChildFragmentManager()
代替getSupportFragmentManager()
或getFragmentManager()
时。
就是这样。
答案 1 :(得分:0)
我无法评论所以我会在这里写一个答案。
为什么不将viewpager作为片段放置:
public class ViewPager extends Fragment{
public static final String TAG = ViewPager.class.getSimpleName();
private ViewPagerAdapter mAdapter;
public static ViewPager newinstance(){
ViewPager viewPager = new ViewPager();
return viewPager ;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.view_pager, container, false);
ViewPager viewPager = (ViewPager) view.findViewById(R.id.pager);
mAdapter = new ViewPagerAdapter(getChildFragmentManager());
viewPager.setAdapter(mAdapter);
return view;
}
}
在适配器中:
public class ViewPagerAdapter extends FragmentPagerAdapter{
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
return Fragment.newinstance();
}
@Override
public int getCount() {
return 5; //number of pages on your viewPager
}
然后在您的主要活动中,您可以使交易添加视图寻呼机
ViewPager viewPager = ViewPager.newInstance();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.content_frame,viewPager);
ft.addToBackStack(ViewPager.TAG);
ft.commit();