【问题标题】:Serialize - Data for Model class not passing to another Activity序列化 - 模型类的数据未传递给另一个活动
【发布时间】:2020-01-25 15:25:06
【问题描述】:

我通过实现接口Serializable

使我的模型类Serializable

我还把所有的嵌套类都做成了Serializable。

创建的意图如下:

Intent intent = new Intent(this,AddinquiryActvity.class);
intent.putExtra("sampleObject",inquiryDetailsModel);
startActivity(intent);
finish();

并在下面的另一个活动中接收它:

    Intent i = getIntent();
    InquiryDetailsModel inquiryDetailsModel = (InquiryDetailsModel) i.getSerializableExtra("sampleObject");
    if(inquiryDetailsModel!=null){
        Toast.makeText(this, "Successfully get", Toast.LENGTH_SHORT).show();
    }else{
        Toast.makeText(this, "Successfully not get", Toast.LENGTH_SHORT).show();
    }

但是,inquiryDetailsModel 总是为 null

可能是什么问题?

谢谢。

【问题讨论】:

  • 能不能把序列化码放上来。另外你为什么要序列化而不是 parcelable?
  • 恕我直言,在活动之间传递完整的模型对象是 Android 中的反模式。谷歌正在引导开发人员使用更多的片段和更少的活动。即使出于技术原因这些应该保持独立的活动,您也可以使用单例存储库来获取模型对象,然后在活动之间传递 ID。除此之外,您可能希望在调试器中检查 Intent 中的额外内容,以查看问题是否出在创建 Intent、接收 Intent 或尝试从 @987654326 中提取此特定额外内容@.

标签: android android-intent serialization pojo


【解决方案1】:

如果你想通过 Serializable 使用Bundle,就像这个 sn-p 代码

    Bundle bundle = new Bundle();
    bundle.putSerializable("key", your_object);
    intent.putExtras(bundle);

在某个类中

Bundle b = getIntent().getExtras();
if(b != null)
thumbs = (ObjectType) b.getSerializable("key");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    相关资源
    最近更新 更多