Aactivity跳转到Bactivity之后再返回Aactivity的几种操作

一个主界面(主Activity)通过意图跳转至多个不同子Activity上去,当子模块的代码执行完毕后再次返回主页面,将子activity中得到的数据显示在主界面/完成的数据交给主Activity处理。这种带数据的意图跳转需要使用activity的onActivityResult()方法。

(1)startActivityForResult(Intent intent, int requestCode);

第一个参数:一个Intent对象,用于携带将跳转至下一个界面中使用的数据,使用putExtra(A,B)方法,此处存储的数据类型特别多,基本类型全部支持。

第二个参数:如果> = 0,当Activity结束时requestCode将归还在onActivityResult()中。以便确定返回的数据是从哪个Activity中返回,用来标识目标activity。

与下面的resultCode功能一致,感觉Android就是为了保证数据的严格一致性特地设置了两把锁,来保证数据的发送,目的地的严格一致性。

 

以指定的请求码(requestCode)启动Activity,而且程序将会获取新启动的Activity返回的结果(通过onActivityResult(int requestCode, int resultCode, Intent intent)方法获取
 
        requestCode:请求码,该参数代表了启动ActivityTwo的请求码。这个请求码的值由开发者根据业务自行设置,用于标识请求来源。(ActivityOne中可能包含多个按钮,并调用多个startActivityForResult()方法来打开多个不同的Acticity(ActivityTwo,ActivityThree.....),当这些新打开的Activity关闭后,系统都将回调ActivityOne中的onActivityResult()方法,为了知道这个方法是由哪个请求的结果所触发,我们就可以用请求码进行判断)
 
        resultCode:结果码,在ActivityTwo中(ActicityTwo.this.setResult(int resultCode,Intent intnt))设置结果码,用于判别返回的数据来自哪个Acticity。
 
        intent:可以通过这个intent获取ActivityTwo所返回的结果。(因为该intent是ActivityOne中对应的Intent,但是此时通过ActivityTwo绑定了数据))。

(2)onActivityResult(int requestCode, int resultCode, Intent data)

第一个参数:这个整数requestCode用于与startActivityForResult中的requestCode中值进行比较判断,是以便确认返回的数据是从哪个Activity返回的。

第二个参数:这整数resultCode是由子Activity通过其setResult()方法返回。适用于多个activity都返回数据时,来标识到底是哪一个activity返回的值。

第三个参数:一个Intent对象,带有返回的数据。可以通过data.getXxxExtra( );方法来获取指定数据类型的数据,

MainActivity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法

复制代码
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case SCANNIN_GREQUEST_CODE:
            if(resultCode == RESULT_OK){
                Bundle bundle = data.getExtras();
                //显示扫描到的内容
                mTextView.setText(bundle.getString("result"));
                //显示
                mImageView.setImageBitmap((Bitmap) data.getParcelableExtra("bitmap"));
            }
            break;
        }
}

 

(3)setResult(int resultCode, Intent data)

在意图跳转的目的地界面调用这个方法把Activity想要返回的数据返回到主Activity,

第一个参数:当Activity结束时resultCode将归还在onActivityResult()中,一般为RESULT_CANCELED该值默认为0 , RESULT_OK该值默认为-1。

第二个参数:一个Intent对象,返回给主Activity的数据。在intent对象携带了要返回的数据,使用putExtra( )方法。

 

posted @ 2020-02-10 20:33  喜欢爬的孩子  阅读(962)  评论(0编辑  收藏  举报