Fragmenty ViewPager znikają po zmianie obrotu ekranu
Pracuję nad aplikacją na Androida, która zawieraViewPager
zFragment
s, w ten sposób:
MainActivity
(MainActivityFragment
(screenSlideViewPager
(Fragment
s))), co oznacza:
Activity
zawiera Fragment
zawiera ViewPager
zawiera Fragment
s
Teraz moim problemem jest obracanie urządzenia lub zmiana obrotu ekranu, wszystkie fragmenty w ViewPager znikną.
jakieś pomysły na rozwiązanie tego problemu?
EDYTUJ 1
MainActivity.java:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getSupportFragmentManager().findFragmentByTag(TAG) == null) {
final FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
ft.add(android.R.id.content, new MainActivityFragment(), TAG);
ft.commit();
}
}
MainActivityFragment.java:
public class MainActivityFragment extends Fragment {
private ViewPager mPager = null;
private PagerAdapter mPageAdapter = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View reVal = inflater.inflate(R.layout.activity_main, container, false);
mPager = (ViewPager) reVal.findViewById(R.id.pagerMainContent);
mPageAdapter = new ScreenSlidePagerAdapter(getActivity().getFragmentManager());
mPager.setAdapter(mPageAdapter);
return reVal;
}
private MainGridViewFragment mainGridFragment;
private AlphabetGridViewFragment alphabetGridFragment;
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public android.app.Fragment getItem(int position) {
switch (position) {
case 1:
mainGridFragment = new MainGridViewFragment();
return mainGridFragment;
case 0:
alphabetGridFragment = new AlphabetGridViewFragment();
return alphabetGridFragment;
default:
return null;
}
}
@Override
public int getCount() {
return 2;
}
}
}
EDYCJA 2
OczywiścieMainActivity
iMainActivityFragment
są załadowane, a dowodem jest TheActionBar
, zauważ także toViewPager
jest również ładowany, ponieważ nadal możesz poruszać się między stronami (niebieskie światło oznacza, że pager osiągnął ostatnią stronę), ale nie możesz zobaczyć jego zawartości.