Monday 15 August 2011

android - Values ​​are changed when inserted in Bundle -



android - Values ​​are changed when inserted in Bundle -

when set object bundle can transfer activity, changing value of attribute idescritorio occurs. in loginactivity idescritorio value of = 1, when in main activity value of 7.

logcat

loginactivity method

private void iniciarmainactivity(usuario usuarioautenticado) { //iniciar activity main intent = new intent(loginactivity.this, mainactivity.class); bundle b = new bundle(); b.putparcelable("usuarioautenticado", usuarioautenticado); log.d(tag, "idescritorio: " + string.valueof(usuarioautenticado.getidescritorio())); i.putextras(b); startactivity(i); }

mainactivity oncreate()

@override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); //widgets inicializecomponents(); //listeners events listeners(); //recuperar os valores de usuario autenticado enviado da activity login _usuarioautenticado = new usuario(); bundle bundle = getintent().getextras(); if(bundle != null) _usuarioautenticado = bundle.getparcelable("usuarioautenticado"); log.d(tag, "idescritorio: " + string.valueof(_usuarioautenticado.getidescritorio())); }

class usuario

public class usuario implements parcelable { private int id; private int idescritorio; private string nome; private string login; private string senha; /** * construtores */ public usuario() { super(); } public usuario(parcel parcel) { this(); this.id = parcel.readint(); this.idescritorio = parcel.readint(); this.nome = parcel.readstring(); this.login = parcel.readstring(); this.senha = parcel.readstring(); } /** * propriedades */ public void setid(int id) { id = id; } public int getid() { homecoming id; } public int getidescritorio() { homecoming idescritorio; } public void setidescritorio(int idescritorio) { idescritorio = idescritorio; } public string getnome() { homecoming nome; } public void setnome(string nome) { nome = nome; } public string getlogin() { homecoming login; } public void setlogin(string login) { login = login; } public string getsenha() { homecoming senha; } public void setsenha(string senha) { senha = senha; } @override public int describecontents() { homecoming 0; } @override public void writetoparcel(parcel out, int flags) { out.writeint(getid()); out.writestring(getnome()); } public static final parcelable.creator<usuario> creator = new parcelable.creator<usuario>(){ @override public usuario createfromparcel(parcel in){ homecoming new usuario(in); } @override public usuario[] newarray(int size) { homecoming new usuario[size]; } };

}

the problem parcelable class. in writetoparcel class, writing id , nome parcel.

@override public void writetoparcel(parcel out, int flags) { out.writeint(getid()); out.writestring(getnome()); }

however, reading 5 fields when creating object in usuario(parcel parcel). work correctly, alter writetoparcel method to:

public void writetoparcel(parcel out, int flags) { out.writeint(getid()); out.writeint(getidescritorio()); out.writestring(getnome()); out.writestring(getlogin()); out.writestring(getsenha()); }

android android-activity parcelable

No comments:

Post a Comment