任何人都可以列出requestCode
要传递的值startActivityForResult()
及其目的吗?另外,你能解释一下setResult
可用的参数RESULT_OK
吗?还有什么?请帮忙。
4 回答
当您使用 启动结果活动时requestCode >= 0
,此代码将onActivityResult()
在第二个活动完成后返回到第一个活动。您可以Activity
从您的Activity
. 在每种情况下,您都会获得对startActivityForResult()
传递 requestCode 的方法的回调。我们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
}
}
}
你可以放任何你想要的东西requestCode
,在那里你可以知道在Activity
使用指定的开始后你期望返回什么具体信息requestCode
。被Activity
调用的应该setResult(RESULT_OK)
在将信息传递给之前调用Activity
以验证这是正确的数据并且一切正常。
由requestCode
你决定。它将帮助您以Activity
您的方法识别哪些已经完成onActivityResult()
。只要您只使用自己的活动,结果参数或多或少取决于您。您可以将其视为被调用活动对调用的返回值。
requestCode
instartActivityForResult()
用来给request分配一个id,这样就可以用这个代码来识别request,in onActivityResult()
。就像有人编写了代码来启动活动 B 和 C 中的两个活动,通过遵循代码
startActivityForResult(new Intent(A.this, B.class), 1);
startActivityForResult(new Intent(A.this, C.class), 2);
现在onActivityResult()
你可以识别出哪个Activity
返回了结果。
该setResult()
方法用于设置一个Intent
in Result 和一个resultCode
. 通过resultCode
我们告诉onActivityResult()
结果是好的,或取消。在Intent
我们设置的Result中,可以用来传递一些数据,通过intent.putExtra()
方法。