Sunday, 15 August 2010

Android Parcelable error when exiting from Activity with Spinner -



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