Guardar ArrayList en el paquete savedInstanceState

El ArrayList se define en el nivel de clase. Estos son mis métodos savedInstance:

@Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putStringArrayList("savedList", list); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); list=savedInstanceState.getStringArrayList("savedList"); } 

Pero aún así, cuando cambio la orientación ArrayList está en blanco

Cuando se utiliza onRestoreInstanceState() para restaurar el estado, se llama después de onStart() para actualizar su lista con el estado guardado después de definir el adaptador. Su mejor opción es restaurar la lista en onCreate() la misma manera que lo hace en onRestoreInstanceState() . También puede redefinir el adaptador o llamar a notifyDataSetChanged() .

 TextView textviewname; String textname; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //declare the ui like this textviewname = (TextView) findViewById(R.id.textviewid); if(savedInstanceState==null){ //the first time the activity was created //do the normal flow of the code //Example:getting the intent data for(savedList)or processing it Intent i = getIntent(); textname = i.getStringExtra("savetext"); //or textname="name_data"; }else{ //this is called when orientation change occur //get the savedata list=savedInstanceState.getStringArrayList("savedList"); textname=savedInstanceState.getString("savetext"); } textviewname.setText(textname); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); //saving data when orientation change trigger //saving data before ondestroy happens //onSaveInstanceState is called before going to another activity or orientation change outState.putStringArrayList("savedList", list); outState.putString("savetext", textname); //all imnportant data saved and can be restored } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); //this is only called after ondestroy-> oncreate occur list=savedInstanceState.getStringArrayList("savedList"); textname=savedInstanceState.getString("savetext"); //oncreate->onSaveInstanceState->ondestroy->oncreate->onRestoreInstanceState } 

tratar de usar

 list.addAll(savedInstanceState.getStringArrayList("savedList")); 

en lugar

 list=savedInstanceState.getStringArrayList("savedList"); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.