在状态丢失或屏幕旋转时,当我的布尔标志为真时,我想重新创建我的屏幕。但是,片段管理器仍然附加了先前的片段并且它被加载。
我该怎样做才能摆脱那个片段?
public class ViewPagerAdapter extends FragmentPagerAdapter {
private String[] mData;
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
mData= new String[0];
}
@Override
public Fragment getItem(int position) {
Bundle bundle = new Bundle();
bundle.putInt("key", position);
Fragment fragment = new MyFragment();
fragment.setArguments(bundle);
return fragment;
}
@Override
public int getCount() {
return mData.length;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public CharSequence getPageTitle(int position) {
return mData[position];
}
public void setData(String[] data) {
mData= data;
}
}
Activity onCreate()
中的一段代码mViewPagerAdapter = new ViewPagerAdapter(getFragmentManager());
mViewPagerAdapter.setData(data);
viewPager.setAdapter(mViewPagerAdapter);
答案 0 :(得分:0)
您可以覆盖instantiateItem
()来检测屏幕旋转,就像片段一样。
代码示例:
@Override
public boolean isViewFromObject(View view, Object o) {
return o == view;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = getActivity().getLayoutInflater().inflate(R.layout.pager_item,
container, false);
return view;
}
注意:屏幕旋转时会出现instantiateItem
()。活动没有检测到。提示是类没有onCreateView(),就像片段类一样。