【问题标题】:getParcelable returns null even if passed object is no null即使传递的对象不为 null,getParcelable 也会返回 null
【发布时间】:2012-08-26 00:58:36
【问题描述】:

我想将一个可打包的对象传递给另一个活动。 所以我实现了一个 parcelable 类来完成这个。 我编码:

Intent intent = new Intent(mainactivity.this, SecondActivity.class);
Object[] object = new Object();
intent.putExtra("Object ", object);
startActivity(intent);

在我编写的第二个活动中:

Object[] object = (Object[]) getIntent().getExtras().getParcelable("object");

当我将对象传递给 Intent 时,它不为空。 虽然,当我在第二个 Activity 中得到它时为空。 你有什么建议吗?提前致谢!

【问题讨论】:

    标签: android android-intent parcelable


    【解决方案1】:

    你可以简单地在调用者中使用:

    Intent i = new Intent(EditActivity.this, ViewActivity.class);
    i.putExtra("myObj", p);
    startActivity(i);
    

    在接收器中:

    Bundle b = i.getExtras();
    Person p = (Person) b.getParcelable("myObject");
    

    希望对你有帮助

    【讨论】:

    • 我在某个地方看到了类似你的答案-i.putExtra("return-data", p); 和接收者b.getParcelable("data"); 及其工作。两个键不相同的地方怎么可能?我想知道它。
    【解决方案2】:

    改变这个:

    Object object = (Object) getIntent().getExtras().getParcelable("object");
    

    到这里:

    Object object = getIntent().getExtras().get("Object");
    

    getParcelable 仅应在您使用putParcelable 或在代码的发送部分使用putExtra 插入Parcelable 对象时使用。

    附:还要注意键名 Objectobject

    的区别

    【讨论】:

    • 你修复了O键的差异吗?
    • 我注意到您使用数组更新了您的问题。您不能简单地使用数组。尝试为您的对象实现 Parcelable,然后将 parcelableArray 放入 bundle
    • 我修好了。我注意到问题出在铸造上。我得到了一个可打包的对象,但无法将其转换为我的数组对象。我现在正在努力。
    • 我刚刚解析了 Object 数组中的每个 Parcelable 数组元素,并且一切正常。
    猜你喜欢
    • 2020-08-17
    • 2021-09-22
    • 2017-03-20
    • 1970-01-01
    • 2012-06-13
    • 2015-12-30
    • 2023-03-22
    • 1970-01-01
    • 2018-02-12
    相关资源
    最近更新 更多