Android ViewPager内部片段仅加载一次
我对ViewPager有意见。我正在使用FragmentActivity,并按照以下方法在FragmentActivity中添加了多个片段Android ViewPager内部片段仅加载一次,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我对ViewPager有意见。我正在使用FragmentActivity,并按照以下方法在FragmentActivity中添加了多个片段 public void addFragment(Fragment fragment, boolean addToBackStack, int transition) { FragmentTransaction ft = getFragmentManager().beginTransaction().setCustomAnimations(R.
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
片段A在运行应用程序时工作正常。当我转到片段B
然后我再次将片段B替换为片段A,然后ViewPager不工作。我看到空白视图,我正在使用VIEWPAGE。
请让我知道如何解决这个问题
谢谢我无法发表评论,所以我要在这里写一个答案 为什么不将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();
我自己解决的问题是,当您在片段中使用
ViewPager
时,使用getChildFragmentManager()
而不是getSupportFragmentManager()
或getFragmentManager()
就是这样。我有一个片段自定义视图,我在其中放置了ViewPagerCheck希望它有帮助:)Check希望它能解决您的问题:)