Activity之间数据传递
博客专区 > qii 的博客 > 博客详情
Activity之间数据传递
qii 发表于4年前
Activity之间数据传递
  • 发表于 4年前
  • 阅读 98
  • 收藏 2
  • 点赞 0
  • 评论 0

从一个activity启动另外一个activity,并附带一些数据过去。一般使用的方法是:

Intent intent = new Intent(ProductActivity.this, ProductCommentActivity.class);
intent.putExtra("productId", 4026);
startActivity(intent);

从一个activity返回到另外一个activity,有时候也需要附带一些数据。这时,2个activity之间数据传递的写法就需要一些规范。

首先,在主activity里面,数据传递或者无数据传递,都需要一个标识,即requestCode。因此,主activity启动另一个activity的写法为:

Intent intent = new Intent(ProductActivity.this, ProductGuigeActivity.class);
intent.putExtra("productId", 4026);
startActivityForResult(intent, GET_CODE);

这里的get_code是自定义的,为大于等于0的整数。

此处必须使用startActivityForResult来启动,若采用第一种方法,那么,主activity将无法接收到返回的数据。这是根据我修改apidemos里的代码测试的结果。

其次,在子activity里,数据回传的写法为:

Intent intent = new Intent(ProductGuigeActivity.this, ProductActivity.class);
intent.putExtra("sel_guige", products.get(pos).getProductId());
intent.putExtra("sel_guige_name", products.get(pos).getProductName());
setResult(RESULT_OK, intent);

另外,我遇到的另外一个问题是,当我的程序已经启动,在重新运行项目时,会产生一个错误,如图:


这个错误只是在启动的时候异常,程序自动重启之后,则一切正常。但是这会导致所有的activity在切换的时候,都重新创建。导致数据无法回传。

如果在重新部署项目之前,先解释运行的APP,则没有该错误。暂时不知道什么原因。如果有人知道,请指点一下。



共有 人打赏支持
粉丝 14
博文 77
码字总数 23520
×
qii
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: