Reputation: 117
I am trying to pass an object to another class using intent. The object implements Parcelable.
The thing is, when I try to get the attributes it doesn't get the object, it says it's null.
But when I do a System.out.println
of the intent.getExtras()
:
Bundle[{usuariocreado =com.example.frpi.repasando.Usuario@4ed1d39}]
It's actually there!
if (this.getIntent().getExtras() != null) {
Usuario usuariocreado = intent.getParcelableExtra("usuariocreado");
usuariocreado.getNombreUsuario();
} else {
System.out.println("Mierda");
}
This is the code on MainActivty which receives the intent.
NombreUsuario = (EditText) findViewById(R.id.UsuarioRegister);
PasswordPrimero = (EditText) findViewById(R.id.PasswordPrimero);
Usuario obj = new Usuario(String.valueOf(NombreUsuario.getText()), String.valueOf(PasswordPrimero.getText()));
Intent intent = new Intent(getBaseContext(), MainActivity.class);
Usuario usuariocreado = new Usuario(String.valueOf(NombreUsuario.getText()), String.valueOf(PasswordPrimero.getText()));
intent.putExtra("usuariocreado ", usuariocreado);
startActivity(intent);
This is the code on the SecondActivity which sends the intent.
What am i doing wrong??
Thanks!
public class Usuario implements Parcelable {
public Usuario(String nombreUsuario, String passwordPrimero) {
NombreUsuario = nombreUsuario;
PasswordPrimero = passwordPrimero;
}
/**
* NombreUsuario : Paco
* PasswordPrimero : Example
*/
private String NombreUsuario;
private String PasswordPrimero;
protected Usuario(Parcel in) {
NombreUsuario = in.readString();
PasswordPrimero = in.readString();
}
public static final Creator<Usuario> CREATOR = new Creator<Usuario>() {
@Override
public Usuario createFromParcel(Parcel in) {
return new Usuario(in);
}
@Override
public Usuario[] newArray(int size) {
return new Usuario[size];
}
};
public String getNombreUsuario() {
return NombreUsuario;
}
public void setNombreUsuario(String NombreUsuario) {
this.NombreUsuario = NombreUsuario;
}
public String getPasswordPrimero() {
return PasswordPrimero;
}
public void setPasswordPrimero(String PasswordPrimero) {
this.PasswordPrimero = PasswordPrimero;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(NombreUsuario);
dest.writeString(PasswordPrimero);
}
}
Upvotes: 0
Views: 41
Reputation: 1083
You have to cast the intent.getParcelableExtra("usuariocreado")
with Usuario
Replace
Usuario usuariocreado = intent.getParcelableExtra("usuariocreado");
with
Usuario usuariocreado = ((Usuario) intent.getParcelableExtra("usuariocreado"));
Upvotes: 1