Android ViewPager内部碎片加载一次

问题描述:

我得到ViewPager的问题。我正在使用FragmentActivity,并在FragmentActivity中添加了多个片段,如下所示。Android ViewPager内部碎片加载一次

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与 ViewPager

湾)片段B而不ViewPager

片段A工作正常,当我运行应用程序。当我去片段B 然后我再次将Fragment B替换为片段A,然后ViewPager无法正常工作。我看到我正在使用ViewPager的空白视图。

请让我知道我该如何解决这个问题

感谢

+0

检查http://*.com/questions/19485848/how-load-fragment-in-viewpager-only-when-its-selected 希望它能帮助:) – 2015-02-06 07:21:01

+0

检查HTTP://计算器。 com/questions/19485848/how-load-fragment-in-viewpager-only-when-its-selected 希望它解决你的问题:) – 2015-02-06 07:23:02

我自己解决了这个问题,当你在fragm里面使用ViewPager使用getChildFragmentManager()而不是getSupportFragmentManager()getFragmentManager()

就是这样。

我不能评论,所以我要在这里写的答案。

为什么你不只是把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(); 
+0

我有片段自定义视图,我放置ViewPager – 2014-09-23 03:47:43