zoukankan      html  css  js  c++  java
  • 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( )方法。

  • 相关阅读:
    腾讯云 Centos 配置 JDK & Tomcat & Mysql
    JNI编程新手入门:Java和C++的超简单交互
    关于正则表达式的一些实际应用
    CAJ 转化为PDF
    Latex 大括号后多行输出
    Latex 安装
    Neo4j使用操作
    pip 升级操作
    venue recommendation —— 应用场景/用户分类
    Recbole安装及使用
  • 原文地址:https://www.cnblogs.com/dazhi151/p/12292590.html
Copyright © 2011-2022 走看看