【发布时间】: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());
【问题讨论】:
标签: java android android-fragments fragment adapter