7

任何人都可以列出requestCode要传递的值startActivityForResult()及其目的吗?另外,你能解释一下setResult可用的参数RESULT_OK吗?还有什么?请帮忙。

4

4 回答 4

8

当您使用 启动结果活动时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
  }
 }
}
于 2012-09-03T10:56:15.017 回答
3

你可以放任何你想要的东西requestCode,在那里你可以知道在Activity使用指定的开始后你期望返回什么具体信息requestCode。被Activity调用的应该setResult(RESULT_OK)在将信息传递给之前调用Activity以验证这是正确的数据并且一切正常。

于 2012-09-03T10:46:41.490 回答
2

requestCode你决定。它将帮助您以Activity您的方法识别哪些已经完成onActivityResult()。只要您只使用自己的活动,结果参数或多或少取决于您。您可以将其视为被调用活动对调用的返回值。

于 2012-09-03T10:48:58.573 回答
2

requestCodeinstartActivityForResult()用来给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()方法用于设置一个Intentin Result 和一个resultCode. 通过resultCode我们告诉onActivityResult()结果是好的,或取消。在Intent我们设置的Result中,可以用来传递一些数据,通过intent.putExtra()方法。

于 2012-09-03T10:53:10.673 回答