Paco Pinazo Guna
Paco Pinazo Guna

Reputation: 117

Get object from intent throws null

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

Answers (1)

Hayssam Soussi
Hayssam Soussi

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

Related Questions