2013-02-17 8 views
6

in meiner App möchte ich Daten unter savedInstanceState() speichern. Ich möchte ArrayList<HashMap<String,String>> speichern. Und das kann ich bisher nicht. hier ist mein Code, der michArrayList von Hash-Karte speichern

@Override 
    protected void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putParcelableArrayList("places", (ArrayList<? extends Parcelable>) places); 

    } 

wiederherstellen() -Methode

private void restore(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     //What should i do here! i have try many things but none of them is helping 

    } 

Antwort

24

Seit ArrayList, HashMap und String sind Serializable stört Sie Bundle.putSerializable und Bundle.getSerializable

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putSerializable("places", places); 
} 

private void restore(Bundle savedInstanceState) { 
    if (savedInstanceState != null) { 
     places = (ArrayList<HashMap<String,String>>) savedInstanceState.getSerializable("places"); 
    } 
} 

auch verwenden können, Stellen Sie sicher, dass Sie restore fr anrufen om onRestoreInstanceState oder onCreate

+1

ohh Nun Dank. es hat funktioniert –

+0

Danke von mir auch! Wenn Sie onRestoreInstanceState verwenden, müssen Sie auch nur die Nullprüfung durchführen. http://developer.android.com/training/basics/activity-lifecycle/recreating.html – piratemurray

0

können sagen, u haben:

ArrayList< HashMap< String,String>> arr = new ArrayList< HashMap< String,String>>(); 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putParcelableArrayList("places", (ArrayList< ? extends Parcelable>) arr); 
    } 

    @Override 
    protected void onRestoreInstanceState(Bundle savedInstanceState) { 

    ArrayList<HashMap<String,String>> a = (ArrayList<HashMap<String,String>>)savedInstanceState.get("places"); 
    /*for(int i =0; i< a.size(); i++){ 
     HashMap<String,String> map = a.get(i); 
     for(String s : map.keySet()){ 
      Log.d("log",s+" :: "+map.get(s)); 
     } 
    }*/ 
} 
Verwandte Themen