启动其他Activity并返回结果

例如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()方法,通过请求码和结果码同时验证,从而获取不同的结果。




你可能感兴趣的:(Activity)