Big*_*ild 10 android android-intent android-activity
这是我的first activity代码,我称之为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();
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个代码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();
}
});
Run Code Online (Sandbox Code Playgroud)
在这里,我看到setResult(RESULT_OK, data)有两个参数,但
onActivityResult(int requestCode, int resultCode, Intent data)有三个,我想知道如何onActivityResult获得第三个参数的价值?怎么工作有人能告诉我吗?为什么不是这个错误?
ari*_*ayu 17
当您调用Activity.startActivityForResult()时,您可以设置requestCode.稍后,需要此请求代码onActivityResult()以确定哪些Activity正在向其发送数据.我们不需要requestCode再次供应,setResult()因为它requestCode是随身携带的.
该data是意图数据从推出意图返回.我们通常在设置extras被调用的intent 时使用这些数据.
考虑这个例子:
致电第二次活动
Intent i = new Intent(MainActivity.this, CheckActivity.class);
startActivityForResult(i, REQUEST_CODE_CHECK);
Run Code Online (Sandbox Code Playgroud)
关于第二次活动,设定意图结果
getIntent().putExtra("TADA", "bla bla bla");
setResult(RESULT_OK, getIntent());
finish();
Run Code Online (Sandbox Code Playgroud)
回到第一个活动,ONACTIVITYRESULT()
if(requestCode == REQUEST_CODE_CHECK && resultCode == RESULT_OK){
text1.setText(data.getExtras().getString("TADA") );
}
Run Code Online (Sandbox Code Playgroud)
你去吧 您现在应该了解Intent data设置和获取值的内容和方式.
小智 5
第三个参数是 Intent,它是您从子 Activity(第二个 Activity,即将完成)发送的。
如果你想在子活动中执行一些计算或获取一些用户名/密码,并且想将结果发送到主活动,那么你可以将数据放在意图中,并在 finish() 之前返回到主活动。
之后,您将在主活动中检查 onActivityResult(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");
}
}
Run Code Online (Sandbox Code Playgroud)
子活动::
@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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17493 次 |
| 最近记录: |