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