My problem is that this error appears when I rotate the screen a second time, the fragments are not lost when I rotate the device for the first time but when doing it for a second, I automatically throw this error, I do not know what may be happening , I would greatly appreciate your help. I leave the onCreate of my Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FragmentManager.enableDebugLogging(true);
concederPermisos();
//preguntar si es tablet
esTablet=getResources().getBoolean(R.bool.es_tablet);
mBundle=new Bundle();
mBundle.putBoolean("es_tablet",esTablet);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
//Asignacion Fragment Manager
miFragmentManager=getFragmentManager();
//Toast
//Mostrando el primer fragment
if (esTablet==false){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}else{
//Si es una tablet de siete pulgadas bloqueará la rotación de pantalla, los únicos con este privilegio serán las de diez pulgadas.
if (getResources().getBoolean(R.bool.es_tablet_de_7_pul)==true){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
LinearLayout.LayoutParams params = new TableRow.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 0, 1f);
findViewById(R.id.content_main).setLayoutParams(params);
}
if (savedInstanceState==null){
main=new MainFragment();
main.setArguments(mBundle);
miFragmentManager.beginTransaction().replace(R.id.content_main, main,"fragment_main").commit();
//dialogs
miFragmentManager.beginTransaction().replace(R.id.alphem_container,new AlphemFragment()).commit();
}
//dialog salir
salirDialog=new Dialog(this);
salirDialog.setContentView(R.layout.dialog_salir);
salirDialog.findViewById(R.id.salir_no).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
salirDialog.dismiss();
}
});
salirDialog.findViewById(R.id.salir_si).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
salirDialog.dismiss();
finish();
}
});
}
@Override
public void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
if (getResources().getBoolean(R.bool.es_tablet)==true){
Bundle Test=outState;
ArrayList<android.support.v4.app.Fragment> listasFragment= (ArrayList<android.support.v4.app.Fragment>) getSupportFragmentManager().getFragments();
getFragmentManager().putFragment(outState,"fragment_main",getFragmentManager().findFragmentByTag("fragment_main"));
getFragmentManager().putFragment(outState,"datos_fragment",getFragmentManager().findFragmentByTag("datos_fragment"));
}
}
@Override
public void onRestoreInstanceState(Bundle inState){
super.onRestoreInstanceState(inState);
if (esTablet==true){
mBundle=new Bundle();
mBundle.putBoolean("es_tablet",esTablet);
main = getFragmentManager().getFragment(inState,"fragment_main");
getFragmentManager().beginTransaction().show(main);
}
}
And the LogCat of the error
03-08 01: 46: 00.557 8355-8355 / com.alphemsoft.education.regression E / AndroidRuntime: FATAL EXCEPTION: main Process: com.alphemsoft.education.regression, PID: 8355 java.lang.RuntimeException: Unable to start activity ComponentInfo {com.alphemsoft.education.regression / com.alphemsoft.education.regression.MainActivity}: java.lang.ArrayIndexOutOfBoundsException: length = 8; index = -1 at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2325) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2387) at android.app.ActivityThread.handleRelaunchActivity (ActivityThread.java:3947) at android.app.ActivityThread.access $ 900 (ActivityThread.java:151) at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1309) at android.os.Handler.dispatchMessage (Handler.java:102) at android.os.Looper.loop (Looper.java:135) at android.app.ActivityThread.main (ActivityThread.java:5254) at java.lang.reflect.Method.invoke (Native Method) at java.lang.reflect.Method.invoke (Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:698)
Caused by: java.lang.ArrayIndexOutOfBoundsException: length = 8; index = -1 at java.util.ArrayList.get (ArrayList.java:310) at android.app.BackStackState.instantiate (BackStackRecord.java:147) at android.app.FragmentManagerImpl.restoreAllState (FragmentManager.java:1832) at android.app.Activity.onCreate (Activity.java:933) at android.support.v4.app.BaseFragmentActivityGingerbread.onCreate (BaseFragmentActivityGingerbread.java:54) at android.support.v4.app.FragmentActivity.onCreate (FragmentActivity.java:319) at android.support.v7.app.AppCompatActivity.onCreate (AppCompatActivity.java:85) at com.alphemsoft.education.regression.MainActivity.onCreate (MainActivity.java:69) at android.app.Activity.performCreate (Activity.java:5990) at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1106) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2278) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2387) at android.app.ActivityThread.handleRelaunchActivity (ActivityThread.java:3947) at android.app.ActivityThread.access $ 900 (ActivityThread.java:151) at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1309) at android.os.Handler.dispatchMessage (Handler.java:102) at android.os.Looper.loop (Looper.java:135) at android.app.ActivityThread.main (ActivityThread.java:5254) at java.lang.reflect.Method.invoke (Native Method) at java.lang.reflect.Method.invoke (Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:698)
Line 69 is exactly the super.onCreate (savedInstanceState) of the onCreate, please, I would appreciate your help, I do not know what else to do.