【问题标题】:Get object from intent throws null从意图中获取对象抛出 null
【发布时间】:2020-10-15 17:39:56
【问题描述】:

我正在尝试使用意图将对象传递给另一个类。该对象实现 Parcelable。

问题是,当我尝试获取它没有获取对象的属性时,它说它是空的。

但是当我做一个System.out.printlnintent.getExtras() 时:

捆绑[{usuariocreado =com.example.frpi.repasando.Usuario@4ed1d39}]

它确实存在!

if (this.getIntent().getExtras() != null) {
    Usuario usuariocreado = intent.getParcelableExtra("usuariocreado");
    usuariocreado.getNombreUsuario();
} else {
    System.out.println("Mierda");
}

这是 MainActivty 上接收意图的代码。

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);

这是发送意图的 SecondActivity 上的代码。

我做错了什么??

谢谢!

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);
    }
}

【问题讨论】:

  • 向我们展示Usuario类的代码。我想,Parcelable 接口实现存在问题。
  • 这样做,上传

标签: java android android-intent


【解决方案1】:

您必须使用 Usuario

投射 intent.getParcelableExtra("usuariocreado")

替换

Usuario usuariocreado = intent.getParcelableExtra("usuariocreado");

Usuario usuariocreado = ((Usuario) intent.getParcelableExtra("usuariocreado"));

【讨论】:

  • 成功了!我是新手,所以我要进一步调查!谢谢
猜你喜欢
  • 1970-01-01
  • 2015-04-30
  • 2018-04-28
  • 2013-05-10
  • 1970-01-01
  • 1970-01-01
  • 2014-03-24
  • 1970-01-01
  • 2017-11-29
相关资源
最近更新 更多