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在切换的时候,都重新创建。导致数据无法回传。
如果在重新部署项目之前,先解释运行的APP,则没有该错误。暂时不知道什么原因。如果有人知道,请指点一下。
转载于:https://my.oschina.net/qii/blog/261640
上一篇: 32个SEO方法提高网站的流量
下一篇: 百度给站长的建站建议近期更新 要和谐发展