Java FragmentStatePagerAdapter空异常

Java FragmentStatePagerAdapter空异常,java,android,android-fragments,fragment,adapter,Java,Android,Android Fragments,Fragment,Adapter,我有两个包含ViewPager的片段。包含viewPager的第一个片段工作得非常好。当我谈到包含ViewPager的第二个片段时,我开始得到FragmentStatePagerAdapter NullException。我知道问题出在哪里,我需要实现onDetach函数来解决这个问题。我在网上搜索,有很多解决方案。我目前正在使用API 19。也许这个解决方案非常适合我。但我不知道如何使用这个解决方案 getSupportFragmentManager().beginTransaction().

我有两个包含ViewPager的片段。包含viewPager的第一个片段工作得非常好。当我谈到包含ViewPager的第二个片段时,我开始得到FragmentStatePagerAdapter NullException。我知道问题出在哪里,我需要实现onDetach函数来解决这个问题。我在网上搜索,有很多解决方案。我目前正在使用API 19。也许这个解决方案非常适合我。但我不知道如何使用这个解决方案

getSupportFragmentManager().beginTransaction().detach(mFragment1).replace(R.id.main, mFragment2).attach(mFragment2).addToBackStack(null).commit();
MFFragment1、MFFragment2和R.id.main究竟是什么

片段1

public class fragment1 extends fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);
    View v = inflater.inflate(R.layout.fragment_restaurantprocess, container, false);
    adapter = new RestaurantProcessPageAdapter(getActivity().getSupportFragmentManager());
    ...
    }
}
片段2

public class fragment2 extends fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        View v = inflater.inflate(R.layout.fragment_feedpage, container, false);
        adapter = new RestaurantFeedPageFragment(getActivity().getSupportFragmentManager());
        ...
    }
}
我正在使用幻灯片动画分割

public void changeFragment_toRight(Fragment frag) /* Slide to right screen */ {
    if (getSupportFragmentManager().findFragmentByTag("frag")!=null) 
        getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.right_slide_in, R.anim.right_slide_out).replace(R.id.container, frag, "frag").commit();
    else
        getSupportFragmentManager().beginTransaction().add(R.id.container, frag, "frag").commit();  
    }
    changeFragment_toRight(new fragment1());
    changeFragment_toRight(new fragment2());

来源:

问题似乎是您正在手动使用FragmentTransaction更改片段。当您为ViewPager提供适配器时,它将自动执行此操作,因此当您更改片段时,您将尝试删除已删除的片段