Intent意图 可用于Activity之间的数据传递,一般可分为下面两种情况,从当前Activity传递到目标Activity后有无返回值: 1.传递后无返回值的情况:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
   在起始Activity中,发送数据
     protected void onCreate(Bundle saveInstanceState){
         super.onCreate(saveInstanceState);
         setContentView(R.layout.thisactivity);
          Intent intent = new Intent();
         //设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity
         intent.setClass(ThisActivity.this,TargetActivity.class);
         //绑定数据
         intent.putExtra("username",username);//也可以绑定数组
         intent.putExtra("userpass",userpass);
         //打开目标Activity
         startActivity(intent);
      }
    在目标Activity中,接收数据:
     protected void onCreate(Bundle saveInstanceState){
         super.onCreate(saveInstanceState);
         setContentView(R.layout.targetactivity);     
         //获得意图
         Intent intent = getIntent();
        //读取数据
        String name = intent.getStringExtra("username");
        String pass = intent.getStringExtra("userpass);
     }
也可以适用Bundle(捆)
    在起始Activity中,发送数据:
     protected void onCreate(Bundle saveInstanceState){
         super.onCreate(saveInstanceState);
         setContentView(R.layout.thisactivity);     
         Intent intent = new Intent();
         //设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity
         intent.setClass(ThisActivity.this,TargetActivity.class);
         //一次绑定多个数据
        Bundle bundle = new Bundle();
        bundle.putString("username",username);
         bundle.putString("userpass",userpass);
         intent.putExtras(bundle);
        //打开目标Activity
        startActivity(intent);
     }
    在目标Activity中,接收数据:
     protected void onCreate(Bundle saveInstanceState){
         super.onCreate(saveInstanceState);
         setContentView(R.layout.targetactivity);     
         //获得意图
         Intent intent = getIntent();
         //读取数据
          Bundle bundle = intent.getExtras();
         String name = bundle.getString("username");
         String pass = bundle.getString("userpass");
     }

2. 传递后有返回值的情况:当需要从目标Activity回传数据到原Activity时,可以使用上述方法定义一个新的Intent来传递数据,也可以使用 startActivityForResult (Intent intent, int requestCode);方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
   在起始Activity中,发送数据:
     protected void onCreate(Bundle saveInstanceState){
         super.onCreate(saveInstanceState);
         setContentView(R.layout.thisactivity);     
         Intent intent = new Intent();
        //设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity
        intent.setClass(ThisActivity.this,TargetActivity.class);
        //绑定数据
        intent.putExtra("username",username);//也可以绑定数组
        intent.putExtra("userpass",userpass);
        //打开目标Activity
         startActivityForResult(intent,1);
     }
     //需要重写onActivityResult方法
     protected void onActivityResult(int requestCode, int resultCode, Intent intent){
        super.onActivityResult(requestCode,resultCode,intent);
         //判断结果码是否与回传的结果码相同
        if(resultCode == 1){
           //获取回传数据
           String name = intent.getStringExtra("name");
            String pass = intent.getStringExtra("pass);
            //对数据进行操作
           ......
         }
    在目标Activity中,接收数据:
     protected void onCreate(Bundle saveInstanceState){
         super.onCreate(saveInstanceState);
         setContentView(R.layout.targetactivity);     
         //获得意图
         Intent intent = getIntent();
         //读取数据
         String name = intent.getStringExtra("username");
         String pass = intent.getStringExtra("userpass);
         //从EditText中获取新的数据给name和pass
         name = editText1.getText().toString();
         pass = editText2.getText().toString()
         //数据发生改变,需要把改变后的值传递回原来的Activity
         intent.putExtra("name",name);
        intent.putExtra("pass",pass);
        //setResult(int resultCode,Intent intent)方法
        setResult(1,intent);
        //销毁此Activity,摧毁此Activity后将自动回到上一个Activity
        finish();
}

转-Activity之间数据传递之Intent数据传递的更多相关文章

  1. Android activity之间的跳转和数据传递

    1.Activity之间的跳转 并且 传递数据 A Activity进行的操作 Intent intent = new Intent(context, B.class); intent.putExtr ...

  2. intent--Activity之间数据传递之Intent数据传递

    intent传值: 4,intent传集合 3,intent传对象, 2,传递后有返回值的情况:当需要从目标Activity回传数据到原Activity时,可以使用上述方法定义一个新的Intent来传 ...

  3. Android笔记(三) 使得Activity之间可以跳转---Intent

    什么是Intent 一个APP肯定不单单由一个Activity构成,我们在使用过程中,经常需要在多个Activity中跳转,Android中Intent可以帮我们来完成在各个Activity中跳转的功 ...

  4. 在activity之间传递数据

    在activity之间传递数据 一.简介 二.通过intent传递数据 1.在需要传数据的界面调用 intent.putExtra("data1", "我是fry&quo ...

  5. Android Activity之间的数据传递

    1.向目标Activity传递数据: Intent intent=new Intent(this,Main2Activity.class); //可传递多种类型的数据 intent.putExtra( ...

  6. 建立、配置和使用Activity——使用Bundle在Activity之间交换数据

    当一个Activity启动另一个Activity时,常常会有一些数据需要传过去——这就像Web应用从一个Servlet跳到另一个Serlvet时,Web应用习惯把需要交换的数据放入requestSco ...

  7. 杂记之activity之间的跳转

    代码结构图 manifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xml ...

  8. 【Android 应用开发】Activity生命周期 与 Activity 之间的通信

    一. Activity生命周期 上图 1. Activity状态 激活状态 : Activity出于前台 , 栈顶位置; 暂停状态 : 失去了焦点 , 但是用户仍然可以看到 , 比如弹出一个对话框 , ...

  9. Activity生命周期 与 Activity 之间的通信

    一. Activity生命周期 上图 1. Activity状态 激活状态 : Activity出于前台 , 栈顶位置; 暂停状态 : 失去了焦点 , 但是用户仍然可以看到 , 比如弹出一个对话框 , ...

随机推荐

  1. linux 大并发下 内核优化

     To support over 500k users, you *need* - A 64 bits hardware/kernel (AMD64, Opterons) - At least 8GB ...

  2. JVMInternals

    http://blog.jamesdbloom.com/JVMInternals.html http://blog.jamesdbloom.com/JavaCodeToByteCode_PartOne ...

  3. /usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h:No such file or directory的解决办法

    在编译32位HDecode时出现如题所示的错误,原因时没有安装32位glibc库导致的: ubuntu: sudo apt-get install libc6-dev-i386 CentOS:yum ...

  4. 出现Fatal IO error 11 (资源暂时不可用) on X server :0.0.的可能原因及解决方案

    我在使用python的过程当中发现了这个有这样的错误,后来看了下面这篇文档才知道原因所在. 最近在编写一个局域网的聊天工具,在编写客户端时,我把界面部分和事件处理函数写好后,准备再开一个线程用于接收服 ...

  5. UNDERSTANDING POSTGRESQL.CONF: CHECKPOINT_SEGMENTS, CHECKPOINT_TIMEOUT, CHECKPOINT_WARNING

    While there are some docs on it, I decided to write about it, in perhaps more accessible language – ...

  6. centos7下环境配置

    1:  安装memcached 问题:error: libevent is required. If it's already installed, specify its path using –w ...

  7. java 中的断言assert的使用

    一.assertion的意义和用法 J2SE 1.4在语言上提供了一个新特性,就是assertion功能,它是该版本在Java语言方面最大的革新. 从理论上来说,通过 assertion方式可以证明程 ...

  8. nginx-gridfs使用

    安装nginx及nginx-gridfs 依赖库.工具   # yum -y install pcre-devel openssl-devel zlib-devel # yum -y install ...

  9. Linux-HAproxy+Keepalived

    HAproxy+++++++++++++Info+++++++++++VIP:192.168.1.222HA-Master IP:192.168.1.117HA-Backup IP:192.168.1 ...

  10. JavaScript理解

    Javascript,是从类型(type)开始,这些类型在JS中分为两大类:原生类型与对象类型.原生类型包括:number,string, boolean, null, undefined:剩下的非原 ...