两种情况
当我们谈论在活动之间传递数据时,有两种可能的情况。
假设有两个活动 A 和 B,并且有一个字符串 X。你在活动 A。
现在让我们看看这两种情况
- A-------->B
- A
案例 1:
字符串 X 在 A 中,您想在 Activity B 中获取它。
这很简单。
在活动 A 中。
1) 创建意图
2) 增加额外价值
3) 开始活动
Intent i = new Intent(A.this, B.class);
i.putExtra("Your_KEY",X);
startActivity(i)
在活动 B 中
在onCreate() 方法中,使用您在存储 X 时使用的密钥 (Your_KEY) 检索字符串 X。
Intent i = getIntent();
String s = i.getStringExtra("Your_KEY");
案例 2:
如果您是 Android 新手,这个案例有点棘手
开发 因为你在活动 A,所以你移动到活动 B,
收集字符串,返回活动 A 并检索
收集的字符串或数据。让我们看看如何处理这种情况。
在活动 A 中
1) 创建意图
2) 使用请求代码启动活动。
Intent i = new Intent(A.this, B.class);
startActivityForResult(i,your_req_code);
在活动 B 中
1) 将字符串 X 放入意图
2) 设置结果
3) 完成活动
Intent returnIntent = new Intent();
returnIntent .putString("KEY",X);
setResult(resCode,returnIntent); // for the first argument, you could set Activity.RESULT_OK or your custom rescode too
finish();
再次进入活动 A
1)重写onActivityResult方法
onActivityResult(int req_code, int res_code, Intent data)
{
if(req_code==your_req_code)
{
String X = data.getStringExtra("KEY")
}
}
对案例2的进一步理解
你可能想知道onActivityResult(int reqCode, resCode, Intent data)中的reqCode、resCode是什么
reqCode 在您必须确定从哪个活动 中获取结果时很有用。
假设您有两个按钮,一个按钮启动相机(您单击一张照片并在您的 Activity 中获取该图像的位图),另一个按钮启动 GoogleMap(您返回当前位置的坐标作为结果)。因此,要区分这两个活动的结果,您可以使用不同的请求代码启动 CameraActivty 和 MapActivity。
resCode:当您必须区分如何结果返回到请求活动时很有用。
例如:您启动相机活动。当相机活动开始时,您可以拍照,也可以直接返回请求活动,而无需按下后退按钮拍照。因此,在这两种情况下,您的相机活动分别使用不同的 resCode ACTIVITY.RESULT_OK 和 ACTIVITY.RESULT_CANCEL 发送结果。
相关链接
Read more on Getting result