I am trying to create layout for an app, that will show Fragments using ViewPager when in Portrait orientation, and side by side when in Landscape mode. So I created custom layout for Landscape mode, inlcuded fragments there and works, but only when I rotate it once. When I rotate it back to Portrait mode, and again to Landscape mode, app crashes and logcat gives me error: Fragment has not been attached yet.
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);
}
}
One of fragments:
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;
}
}
Full app: https://www.dropbox.com/s/0zcu3y7ej1fa9on/MyApplication3.zip?dl=0