java.lang.ArrayIndexOutOfBoundsException: length = 8; index = -1 When rotating the device a second time

0

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.

    
asked by Mijael Viricochea 08.03.2017 в 02:50
source

0 answers