Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ViewPager内部片段仅加载一次_Android_Android Fragments_Android Viewpager - Fatal编程技术网

Android ViewPager内部片段仅加载一次

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.

我对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

片段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希望它能解决您的问题:)