zoukankan      html  css  js  c++  java
  • Android Activity之间的数据传递

    1、向目标Activity传递数据:

    1 Intent intent=new Intent(this,Main2Activity.class);
    2         //可传递多种类型的数据
    3         intent.putExtra("name","张三");
    4         intent.putExtra("age",12);
    5         startActivity(intent);

    2、在目标Activity中取出数据

    1  Intent intent=getIntent();
    2         //用getXxxExtra()取出对应类型的数据。取出String只需要指定key
    3         String name=intent.getStringExtra("name");
    4         //取出int要指定key,还要设置默认值,当intent中没有该key对应的value时,返回设置的默认值
    5         int age=intent.getIntExtra("age",0);

    目标Activity销毁时,可以回传数据给上一个Activity:

    1、启动目标Activity,并设置一个请求码标识当前Activity

    1 Intent intent=new Intent(this,Main2Activity.class);
    2         //startActivityForResult()方法可以启动一个Activity,并可以设置一个int型的请求码标识当前Activity
    3         startActivityForResult(intent,1);

    2、在目标Activity中回传数据

    1 //回传数据用得Intent可以新建,也可以用getIntent()
    2         Intent intent=new Intent();
    3         //设置要回传的数据
    4         intent.putExtra("name","张三");
    5         intent.putExtra("age",18);
    6         //设置结果码标识当前Activity,回传数据。不管多早调用这句代码,这句代码在当前Activity销毁时才会执行,即此Activity销毁时才会回传数据。请求码和结果码不必相同。
    7         setResult(1,intent);

    回传时会把请求码、结果码、Intent数据封装为一个整体回传,请求码+结果码唯一标识回传的Intent

    3、在上一级Activity中取出回传的数据

    上一级Activity使用   startActivityForResult()  开启目标Activity后,当目标Activity销毁时,会向上一级Activity回传数据,并回调上一级  Activity的   onActivityResult()   方法。

    我们需要重写上一级Activity的   onActivityResult()   方法获取回传数据。

     1  //重写上一级Activity的onActivityResult()方法来获取目标Activity回传的数据
     2     //三个形参,请求码、结果码、目标Activity回传的Intent
     3     @Override
     4     protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
     5         //调用基类的方法,此句代码会自动生成
     6         super.onActivityResult(requestCode, resultCode, data);
     7         if(requestCode==1){   //如果请求码是当前Activity的
     8             if(resultCode==1){    //如果结果码是某个目标Activity的,就取出对应的数据。这个判断主要是可能有多个目标Activity向当前Activity回传数据,这些Intent数据中可能具有相同的key
     9                 String name=data.getStringExtra("name");
    10                 int age=data.getIntExtra("age",0);
    11             }
    12         }
    13     }

    如过上一级Activity开启了多个目标Activity,回传数据时都是回调onActivityResult()方法,所以常常要根据结果码区分是哪个目标Activity回传的数据。如果只开启了一个目标Activity,则不必判断。

    数据回传很常用,比如发微信朋友圈时,进入相册选择好图片后,会回传选择的图片的信息。

  • 相关阅读:
    js 变量命名规范
    JS
    python 处理中文十六进制的encode %E9%99%88%E8%80%81%E5%B8%88/%E5%9B%BE%E7%89%87
    Pycharm 项目上传至Gitee/Github详细步骤
    Python 类型建议符, Python 定义函数的时候有冒号:
    Python 解析 JSON
    Python 解析 JSON
    Mac 安装 WordPress
    java常用书籍下载
    Docker环境搭建Redis4.0 Cluster
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/10877230.html
Copyright © 2011-2022 走看看