以下是我调用first activity
的<{1}}代码:
second Activity
以下是@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();
}
}
的代码:
chap.two.Chapter2Activity2
在这里,我看到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_OK, data)
有三个,我想知道onActivityResult(int requestCode, int resultCode, Intent data)
如何获得第三个参数的值?怎么工作有人能告诉我吗?为什么不是这个错误?
答案 0 :(得分:17)
当您调用Activity.startActivityForResult()时,设置requestCode
。稍后,onActivityResult()
需要此请求代码,以确定哪些活动正在向其发送数据。我们不需要在requestCode
上再次提供setResult()
,因为requestCode
是随身携带的。
data
从已启动的意图返回intent data。当我们在被调用的意图上设置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();
回到第一个活动,ONACTIVITYRESULT()
if(requestCode == REQUEST_CODE_CHECK && resultCode == RESULT_OK){
text1.setText(data.getExtras().getString("TADA") );
}
你去吧。您现在应该了解Intent data
是什么以及如何设置和获取值。
答案 1 :(得分:2)
第三个参数是Intent,它是从子活动(第二个活动,即将完成)发送的。
如果您想在子活动中执行某些计算或获取一些用户名/密码,并且您想将结果发送到主活动,那么您将数据放入意图中并在完成之前返回主活动( )。
之后,您将使用Intent参数检查主活动中的onActivityResult(int,int,Intent)。
实施例:: MainActivity:
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();
}