정말 이상한 문제가 있습니다. 다른 액티비티를 표시하고 싶기 때문에 ViewPager가 있습니다. 모든 화면은 자체 문자열을 표시해야합니다. 제 아이디어는 하나의 액티비티, 하나의 ViewPager와 하나의 프래그먼트를 생성하는 것입니다. 여기에는 어떤 String에 대한 로직과 정보가 포함되어 있습니다. 이것은 내가하기 위해 변수 sectionNumber
을 사용하고Android : 회전 후 ViewPager의 잘못된 화면
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;
}
}
내 호출기 어댑터
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;
}
}
이것은 내 하나 개의 조각이
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);
}
입니다 :
이
내 활동입니다 어떤 화면에 포커스가 있는지에 대한 정보 (조각 자체 안에) 저장.잘 작동합니다. 하지만 기기를 돌리면 활동이 파괴되고 다시 생성되지만 (평소대로) 화면에 표시되는 내용은 항상 sting0입니다. 화면 스 와이프를 탐색해도 상관 없습니다. 모든 새 화면에서 (다시 한번 회전 한 후) 단지 String0이 표시됩니다. sectionNumber
은 계속 0입니다. 또한 상태를 저장하지 않아도 회전 할 때 현재 화면이 표시되고 회전 후 화면 0으로 표시되어야합니다 (잘못된 것인가?). Activity와 (과) 같이 새 어댑터와 새 프래그먼트가 다시 생성되지 않습니다. 내가 뭘 잘못하고 있니? 회전 후 활동이 제대로 종료되지 않고 다시 생성되지 않는 이유는 무엇입니까? 데이터를 저장하지 않으려면 나에게 파괴하고 다시 작성하는 것이 좋지만 왜 그렇지 않은 것입니까? 많은 감사합니다