Android:旋转后的ViewPager屏幕错误
我有一个很奇怪的问题。 在我的活动中,我有ViewPager,因为我想显示不同的屏幕。 每个屏幕都必须显示自己的字符串。 我的想法是创建一个activity、一个ViewPager和一个片段,其中包含逻辑和关于必须显示哪个字符串的信息 这是我的活动:Android:旋转后的ViewPager屏幕错误,android,android-fragments,rotation,swipe,Android,Android Fragments,Rotation,Swipe,我有一个很奇怪的问题。 在我的活动中,我有ViewPager,因为我想显示不同的屏幕。 每个屏幕都必须显示自己的字符串。 我的想法是创建一个activity、一个ViewPager和一个片段,其中包含逻辑和关于必须显示哪个字符串的信息 这是我的活动: private PagerAdapter pagerAdapter; private ViewPager mViewPager; @Override protected void onCreate(Bundle savedInstance
private PagerAdapter pagerAdapter;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.wizard_layout);
pagerAdapter = new PagerAdapter(getFragmentManager());
maxPages = pagerAdapter.getCount();
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(pagerAdapter);
mViewPager.setOnPageChangeListener(this);
}
这是我的寻呼机适配器
public class PagerAdapter extends FragmentPagerAdapter {
public PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
case 1:
case 2:
case 3:
case 4:
return StepWelcomeFragment.newInstance(position);
}
return null;
}
@Override
public int getCount() {
return 5;
}
}
这是我唯一的一个片段
public static class StepWelcomeFragment extends Fragment {
private int sectionNumber;
private static final String ARG_SECTION_NUMBER = "section_number";
public static StepWelcomeFragment newInstance(int sectionNumber) {
StepWelcomeFragment fragment = new StepWelcomeFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
fragment.sectionNumber = sectionNumber;
return fragment;
}
public StepWelcomeFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.wizard_welcome_step_layout,
container, false);
switch(sectionNumber){
case 0:
showString0(); break;
case 1:
showString1(); break;
case 2:
showString2(); break;
case 3:
showString3(); break;
case 4:
showString4(); break;
default: break;
}
return rootView;
}
}
我使用变量sectionNumber
来存储(片段本身内部)关于哪个屏幕有焦点的信息
它很好用。
但是,当我旋转设备时,活动被破坏并重新创建(正常情况下),但我在屏幕上看到的总是0。
无论我是否浏览屏幕滑动,在每个新屏幕中(再次旋转后)都只显示String0<代码>区段编号连续为0。
此外,即使没有保存状态,当我旋转显示当前屏幕时,我的期望是,旋转后应显示屏幕0(我错了吗?)。
活动似乎不会重新创建新适配器和新片段。
我做错了什么?
为什么在旋转之后,活动没有被正确地终止和重新创建?
我不想保存任何数据,对我来说,销毁和重建是可以的,但为什么不呢?
非常感谢好的,我买了我自己的。
加起来就够了
@Override
protected void onSaveInstanceState(Bundle outState) {
/* Save which screen in visible */
//super.onSaveInstanceState(outState);
outState.putInt(currentViewTag, mViewPager.getCurrentItem());
}
但是没有super.onSaveInstanceState(超出状态)代码>否则它会保存视图状态,而不是从头开始重新创建视图