欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Activity之间数据传递

程序员文章站 2022-05-14 08:44:33
...

从一个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之间数据传递

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

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



转载于:https://my.oschina.net/qii/blog/261640