2014-09-23 107 views
2

我得到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://stackoverflow.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

回答

7

我自己解決了這個問題,當你在fragm裏面使用ViewPager使用getChildFragmentManager()而不是getSupportFragmentManager()getFragmentManager()

就是這樣。

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(); 
+0

我有片段自定義視圖,我放置ViewPager – 2014-09-23 03:47:43