2013-02-17 25 views
6

w mojej aplikacji chcę zapisać dane na savedInstanceState(). Chcę zapisać ArrayList<HashMap<String,String>>. I do tej pory nie jestem w stanie tego zrobić. tutaj jest mój kod, który przeszkadza miZapisywanie ArrayList of Hash map

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

    } 

przywrócić metoda()

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 

    } 

Odpowiedz

24

Od ArrayList, HashMap i StringSerializable można użyć Bundle.putSerializable i 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"); 
    } 
} 

także upewnij się, że dzwonisz pod numer restore fr om onRestoreInstanceState lub onCreate

+1

ohh Well Dzięki. zadziałało –

+0

Dziękuję także ode mnie! Również, aby dodać, jeśli używasz onRestoreInstanceState, nie musisz wykonywać zerowej kontroli. http://developer.android.com/training/basics/activity-lifecycle/recreating.html – piratemurray

0

powiedzmy u mają:

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)); 
     } 
    }*/ 
}