6
votes

Sauvegarder ArrayList dans le paquet SavedInstaTate

Le tableau est défini au niveau de la classe. Ce sont mes méthodes SavedInstance: xxx

mais toujours, lorsque je change d'orientation, le tableau est vide


1 commentaires

Stackoverflow.com/a/4967491/1001401 Essayez d'obtenir votre arraylist à Oncreate (Bundle SavedInstancestate) de SavedInstanCetate


3 Réponses :


3
votes

Lorsque vous utilisez onrestoreInstancestate () pour restaurer l'état, son appelé après Onstart () Vous devez donc mettre à jour votre liste avec l'état enregistré après avoir défini votre adaptateur. Votre meilleure option consiste à restaurer la liste dans Oncreate () de la même manière que vous le faites sur onrestoreInstancestate () . Vous pouvez également redéfinir l'adaptateur ou appeler notifyDatastetchangeed () .


0 commentaires

3
votes
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
}

0 commentaires

0
votes

Essayez d'utiliser xxx

à la place xxx


0 commentaires