例如FirstActivity需要SecondActivity返回的结果,它们之间的通信是通过
requestCode,resultCode,intent来实现的。
当FirstActivity启动SecondActivity时,会发送一个请求码和一个意图。
Intent intent = new Intent(FirstActivity.this
,SecondActivity.class);
startActivityForResult(intent,0); //requestCode = 0;
SecondActivity会获取启动本界面的意图,将要返回的数据打包进此意图。
此外它还会设置一个结果码。
Intent intent = getIntent();
//将要发送的数据打包进intent
Bundle data = new Bundle();
data.putString("name",String); //自行设置
intent.putExtras(data);
//设置结果码并传入intent
SecondActivity.this.setResult(0,intent); //resultCode = 0;
//结束该Activity
SecondActivity.this.finish();在FirstActivity中重写onActivityResult()方法。@Override
public void onActivityResult(int requestCode , int resultCode , Intent intent){
if(requestCode == 0 && resultCode == 0){
//取出intent中的Bundle
Bundle data = intent.getExtras();
//取出Bundle中的数据
String result = data.getString("name");
}
}
设置请求码和结果码是因为可能有多个界面进行交互,但一旦请求码和结果码同时确定,就可以确定到底是哪两个地方进行交互。
一个Activity(如此例的FirstActivity)可能多出调用startActivityForResult()来打开不同的Activity,这时就要设置不同的请求码(>=0),当这些新的Activity(如此例的SecondActivity)关闭后返回结果,系统会调用前面一个Activity的onActivityResult()方法,通过请求码和结果码同时验证,从而获取不同的结果。
本文介绍Android应用程序中Activity之间如何通过requestCode、resultCode及Intent进行数据传递与交互,详细展示了从启动到接收返回数据的全过程。
2010

被折叠的 条评论
为什么被折叠?



