startActivityforResult的RequestCode类型

时间:2012-09-03 10:43:49

标签: android android-intent

任何人都可以列出requestCodestartActivityForResult()一起传递的价值及其目的吗?另外,您能解释setResult可用的RESULT_OK参数,还有其他什么参数?请帮助。

4 个答案:

答案 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()方法传递一些数据。