Android Parcelable error when exiting from Activity with Spinner -
i hope reading can shed lite here :)
i having problem when close app activity, error:
java.lang.runtimeexception: parcel: unable marshal value
background: saving spinner adapters info in list< spinneritem> in onsaveinstancestate() method , restoring in onrestoreinstancestate() works no problems.
however, when come exit app fires off onsaveinstancestate() , parcelable error. have tried commenting out code saves list in bundle , stops error appearing.
clear it's list cannot understand why or find way around it.
heres code
onsaveinstancestate() -
super.onsaveinstancestate( savedinstancestate ); if ( loginresponse != null ) { savedinstancestate.putserializable( save_login_response, loginresponse ); } //company states list<spinneritem> companyspinnerlist = getspinneradapteraslist( spinner_setupcompany.getadapter() ); if ( companyspinnerlist != null ) { savedinstancestate.putserializable( save_company_list, (java.io.serializable) companyspinnerlist ); } savedinstancestate.putint( save_company_selection, spinner_setupcompany.getselecteditemposition() ); savedinstancestate.putboolean( save_company_enabled, spinner_setupcompany.isenabled() ); //depot states list<spinneritem> depotspinnerlist = getspinneradapteraslist( spinner_setupdepot.getadapter() ); if ( depotspinnerlist != null && depotspinnerlist.size() > 1 ) { //great 1 because first value empty savedinstancestate.putserializable( save_depot_list, (java.io.serializable) depotspinnerlist ); } savedinstancestate.putint( save_depot_selection, spinner_setupdepot.getselecteditemposition() ); savedinstancestate.putboolean( save_depot_enabled, spinner_setupdepot.isenabled() ); // save view states savedinstancestate.putboolean( save_view_enabled_server, edittext_servername.isenabled() ); savedinstancestate.putboolean( save_view_enabled_username, edittext_setupusername.isenabled() ); savedinstancestate.putboolean( save_view_enabled_password, edittext_setuppassword.isenabled() ); savedinstancestate.putboolean( save_button_enabled_login, button_login.isenabled() );
getspinneradapteraslist() -
final list<spinneritem> list = new arraylist<spinneritem>(); ( int = 0; < adapter.getcount(); i++ ) { list.add( (spinneritem) adapter.getitem( ) ); } homecoming list;
thanks much, have great day!
:)
first advise utilize parcelable instead of serializable (it faster):
savedinstancestate.putparcelable(save_depot_list,<your list>);
second, list not parcelable create calss implment parcelable
see link
android spinner android-spinner android-adapter
No comments:
Post a Comment