【问题标题】:FragmentStatePagerAdapter NullExceptionFragmentStatePagerAdapter 空异常
【发布时间】:2014-08-07 16:55:15
【问题描述】:

我有两个包含 ViewPager 的片段。第一个包含 viewPager 的片段效果很好。当我来到包含 ViewPager 的第二个片段时,我开始得到 FragmentStatePagerAdapter NullException。我知道是什么问题,我需要实现 onDetach 函数来解决这个问题。我在互联网上搜索,有很多解决方案。而且我目前正在使用 API 19。所以也许这个解决方案非常适合我。但我不知道如何使用该解决方案。

getSupportFragmentManager().beginTransaction().detach(mFragment1).replace(R.id.main, mFragment2).attach(mFragment2).addToBackStack(null).commit();

mFragment1 和 mFragment2 和 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());

来源: Click here to view the source

【问题讨论】:

    标签: java android android-fragments fragment adapter


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 2014-04-26
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多