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个。只需检查这个回答