Я пытаюсь создать макет для приложения, которое будет отображать фрагменты с помощью ViewPager в портретной ориентации и рядом в альбомном режиме.
Поэтому я создал собственный макет для ландшафтного режима, там есть фрагменты и работает, но только когда я поворачиваю его один раз. Когда я поворачиваю его обратно в портретный режим и снова в альбомный режим, приложение вылетает, и logcat выдает ошибку: фрагмент еще не был прикреплен.
MainActivity.java
public class MainActivity extends AppCompatActivity {
private static final String TAG="MainActivity";
private SectionsPageAdapter mSectionsPageAdapter;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG,"onCreate: Starging.");
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
mSectionsPageAdapter = new SectionsPageAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.container);
setupViewPager(mViewPager);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
}
}
private void setupViewPager(ViewPager viewPager){
SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager());
adapter.addFragment(new Fragment1(),"Zakladka1");
adapter.addFragment(new Fragment2(),"Zakladka2");
viewPager.setAdapter(adapter);
}
}
Один из фрагментов:
public class Tab_Sun extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (!isAdded()){return null;} ;
View rootView = inflater.inflate(R.layout.tabsun, container, false);
//AstroCalculator.Location pozycja;
//pozycja.setLatitude();
return rootView;
}
}
Полное приложение: https://www.dropbox.com/s/0zcu3y7ej1fa9on/MyApplication3.zip?dl=0