Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android onActivityResult参数的目的是什么_Android_Android Intent_Android Activity - Fatal编程技术网

Android onActivityResult参数的目的是什么

Android onActivityResult参数的目的是什么,android,android-intent,android-activity,Android,Android Intent,Android Activity,这是我的第一个活动代码,我从这里调用第二个活动: @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT){ startActivityForResult(new Intent("chap.two.Chapter2Activity2"),request_Code); } ret

这是我的
第一个活动
代码,我从这里调用
第二个活动

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
  if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT){       
    startActivityForResult(new Intent("chap.two.Chapter2Activity2"),request_Code);          
  }    
  return false;
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == request_Code) {
    if (resultCode == RESULT_OK) 
      Toast.makeText(this,data.getData().toString(),Toast.LENGTH_SHORT).show();             
  }
}
这是第二章的代码。第二章活动2

Button n = (Button) findViewById(R.id.btn_OK);
n.setOnClickListener(new View.OnClickListener() {               
   @Override
   public void onClick(View v) {
     // TODO Auto-generated method stub

     Intent data = new Intent();
     //---get the EditText view---
     EditText txt_username =(EditText) findViewById(R.id.txt_username);
     //---set the data to pass back---
     data.setData(Uri.parse(txt_username.getText().toString()));
     setResult(RESULT_OK, data);
     //---closes the activity---
     finish();

   }
});
这里我看到
setResult(RESULT\u OK,data)
有两个参数,但是

onActivityResult(int-requestCode,int-resultCode,Intent-data)
有三个参数,我想知道
onActivityResult
如何获取第三个参数的值?有人能告诉我它是怎么工作的吗?为什么不是这个错误

调用Activity.startActivityForResult()时,设置
requestCode
。稍后,onActivityResult()需要此请求代码来确定向其发送数据的活动。我们不需要在
setResult()
上再次提供
requestCode
,因为
requestCode
是随身携带的

数据
从启动意图返回。当我们在调用的意图上设置
extras
时,通常使用此数据

考虑这个例子:

呼叫第二个活动

Intent i = new Intent(MainActivity.this, CheckActivity.class);
startActivityForResult(i, REQUEST_CODE_CHECK);
在第二个活动中,设置意图结果

getIntent().putExtra("TADA", "bla bla bla");
setResult(RESULT_OK, getIntent());
finish();
if(requestCode == REQUEST_CODE_CHECK && resultCode == RESULT_OK){
    text1.setText(data.getExtras().getString("TADA") );
}
返回到第一个活动,ONACTIVITYRESULT()


好了。现在,您应该了解什么是意图数据,以及如何设置和获取值。

第三个参数是意图,它是您从子活动(第二个活动,即将完成)发送的

如果要在子活动中执行某些计算或获取某些用户名/密码,并且要将结果发送到主活动,则将数据放置在intent中,并在finish()之前返回主活动

之后,您将在主活动中的ActivityResult(int,int,Intent)中签入带有Intent参数的结果

例如: 主要活动:

public void onClick(View view) {
  Intent i = new Intent(this, subActivity.class);
  startActivityForResult(i, REQUEST_CODE);
} 

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
    if (data.hasExtra("username") && data.hasExtra("password")) {
      String username =  data.getExtras().getString("username");
      String password =  data.getExtras().getString("password");

    }
  }
亚活性::

@Override
public void finish() {
  // Create one data intent 
  Intent data = new Intent();
  data.putExtra("username", "Bla bla bla..");
  data.putExtra("password", "*****");
  setResult(RESULT_OK, data);
  super.finish();
} 

但是我不能理解这一部分。如果我从我的主活动中发送请求代码,并在我的主活动中的onActivityResult()中获取该请求代码。比较的逻辑是什么?(requestCode==REQUEST\u CODE\u CHEC)基本思想是,onActivityResult()将捕获它从返回的意图中获得的每个意图。现在,要确定返回的目的是什么,您可以使用
requestCode
,将其与您已经拥有的请求代码进行比较。有时,一个活动期望一个意图回来,另一些时间,超过3个。只需检查这个回答