startActivityForResult使用小结

Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新的Activity 关闭后会向前面的Activity传回数据,为了得到传回的数据,必须在前面的Activity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法

如果是A跳到B的话

startActivityForResult(new Intent(A.this, B.class), 1);
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        String result = data.getExtras().getString("result");//得到新Activity 关闭后返回的数据
        Log.i(TAG, result);
    }

requestCode 请求码,即调用startActivityForResult()传递过去的值
resultCode 结果码,结果码用于标识返回数据来自哪个新Activity

新Activity关闭前需要向前面的Activity返回数据需要使用系统提供的setResult(int resultCode, Intent data)方法实现:

Intent intent = new Intent();
                //把返回数据存入Intent
                intent.putExtra("result", "A");
                //设置返回数据
                OtherActivity.this.setResult(RESULT_OK, intent);
                //关闭Activity
                finish();

上面代码中使用到的RESULT_OK是系统Activity类定义的一个常量

What is requestCode?
请求码的值是根据业务需要由自已设定,用于标识请求来源。一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity,不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。在onActivityResult()方法如果需要知道新Activity是由那个按钮打开的,并且要做出相应的业务处理,可以自己用switch做一下判断

What is resultCode?
在一个Activity中,可能会使用startActivityForResult()方法打开多个不同的Activity处理不同的业务,当这些新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。为了知道返回的数据来自于哪个新Activity,在setResult()里传入resultCode,在onActivityResult(int requestCode, int resultCode, Intent data)里进行判断,就知道来自哪个返回的信息了

你可能感兴趣的:(公司学习记录)