任何人都可以列出requestCode
与startActivityForResult()
一起传递的价值及其目的吗?另外,您能解释setResult
可用的RESULT_OK
参数,还有其他什么参数?请帮助。
答案 0 :(得分:7)
当您使用requestCode >= 0
启动结果活动时,当第二个活动结束时,此代码将返回到第一个活动的onActivityResult()
。您可以从您的结果中启动多个Activity
Activity
。在每种情况下,您都会获得通过requestCode的startActivityForResult()
方法的回调。在onActivityResult()
中,我们可以使用requestCode来查找我们收到回调的活动。因此,要区分来自Activities
的回调,我们使用不同的requestCodes。
例如:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent i = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(i, 1);
Intent i = new Intent(FirstActivity.this, ThirdActivity.class);
startActivityForResult(i, 2);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
//Get the result from SecondActivity
}
}
else if (requestCode == 2) {
if (resultCode == RESULT_OK) {
//Get the result from ThirdActivity
}
}
}
答案 1 :(得分:2)
您可以在requestCode
中添加所需的内容,以便了解在使用指定Activity
启动requestCode
后您希望返回的具体信息。
被调用的Activity
应该在将信息传递给之前的setResult(RESULT_OK)
时调用Activity
,以验证这是正确的数据并且一切正常。
答案 2 :(得分:2)
requestCode
取决于您。它可以帮助您在Activity
方法中识别哪个onActivityResult()
已完成。此外,结果参数或多或少取决于您,只要您只使用自己的活动。您可以将其视为被调用活动对调用的返回值。
答案 3 :(得分:2)
requestCode
中的startActivityForResult()
用于为请求分配ID,因此可以使用此代码在onActivityResult()
中标识请求。就像有人编写代码来启动活动B和C中的两个活动一样,遵循代码
startActivityForResult(new Intent(A.this, B.class), 1);
startActivityForResult(new Intent(A.this, C.class), 2);
现在onActivityResult()
您可以识别哪个Activity
已返回结果。
setResult()
方法用于在结果中设置Intent
,以及resultCode
。到resultCode
我们告诉onActivityResult()
结果没问题或已取消。在我们在结果中设置的Intent
中,可以使用intent.putExtra()
方法传递一些数据。