一:使用静态变量传递数据

(1)静态变量传递数据,在目标Activity中声明静态变量,然后使用setText()方法将静态变量的值导出即可;

(2)静态变量传递数据,在主Activity中对目标Activity的静态变量进行赋值,然后通过Intent的startActivity()方法传递给目标Activity。

代码如下:

二:使用剪切板传递数据
主要步骤:
(1)在主Activity中使用ClipBoardManager类定义对象clipboardManager,调用Android的剪切板服务(ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
(2)主Activity中使用ClipData.newPlainText()方法创建对象clipData用于存数据,然后调用clipboardManager对象的setPrimaryClip()方法将数据剪切到剪切板;
(3)目标Activity中获取ClipBoardManager类定义的对象clipboardManager,调用对象的getPrimaryClip()方法获取ClipData类的对象,然后使用getItemAt()方法获取剪切板数据;
(4)主Activity中通过Intent的startActivity()方法传递给目标Activity,目标Activity中通过TextView的setText()方法显示数据。
主要代码:


注意:
(1)使用ClipBoardManager对象操作剪切板,但是未提供public的构造函数(单例模式),需要使用(ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);获取该对象
(2)在Android-11(Android 3.0)版本之前,利用剪切板传递数据使用setText()和getText()方法,但是在此版本之后,这两个方法就被弃用,转而使用传递ClipData对象来代替。相对于getText和setText而言,利用ClipData对象来传递数据,更符合面向对象的思想,而且所能传递的数据类型也多样化了。关于ClipData对象的说明,请参阅ClipData对象说明。 
(3):在实际编程中,如真需要利用剪切板来传值,需要在调用服务之前来判断android系统的版本。
          if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB)....
(4):如需要利用自定义对象来传值。则在利用剪切板时,须对对象进行转换,被传递的对象必须可序列化,序列化通过实现Serializable接口来标记。。这里我们需要用到base64这个工具类。关于此类的用法,请参阅Base64类


例如:传递复杂数据时,比如说传递一个对象。此时需要先声明一个对象,如下面的代码:

(1)定义一个MyData.java类,并使其实现一个Serializable接口保证其是可序列化的;
>在MyData.java类中定义toString()方法,并添加相应的构造函数;
(2)存入数据:在主Activity中,使用MyData类定义对象,并将对象转化为字符串,此处使用的是Android中提供的 Base64 工具类,这个类主要是用来对对象进行压缩和解码的过程,使用默认方式:Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);
(3)取出数据:目标Activity中,通过Base64类对被序列化的数据进行反序列化,将字符串还原为对象Base64.decode(msgString, Base64.DEFAULT),然后进行数据处理。

 主要代码参见:http://www.cnblogs.com/plokmju/p/3140099.html
注意:序列化和反序列化主要用到了IO中一些流的操作。需要注意的是,无论是读取流还是写入流,在使用完之后,都必须关闭  。
总结:使用剪切板传递数据有利有弊,剪切板为Android系统管理的,所以在一个地方存入的数据,在这个Android设备上任何应用都可以访问的到,但是正是因为此设备访问的都是同一个剪切板, 
可能导致当前程序存入的数据在使用前被其他的程序覆盖,从而导致无法正确获得数据。
三:使用全局变量传递数据
eg:app = (App)getApplication();
         app.setName("snowy");
四:使用Intent的putExtra()方法传递数据
代码参见:http://blog.csdn.net/ahuier/article/details/8953017

Android开发—— 传递数据的更多相关文章

  1. 关于Android中传递数据的一些讨论--备用

    在Android中编写过程序的开发人员都知道.在Activity.Service等组件之间传递数据(尤其是复杂类型的数据)很不方便.一般可以使用Intent来传递可序列化或简单类型的数据.看下面的代码 ...

  2. 关于Android中传递数据的一些讨论

    在Android中编写过程序的开发人员都知道.在Activity.Service等组件之间传递数据(尤其是复杂类型的数据)很不方便.一般可以使用Intent来传递可序列化或简单类型的数据.看下面的代码 ...

  3. Android开发-之数据的存储方式一

    在Android中,数据的存储分为两种方式: 1.直接以文件的形式存储在目录中 2.以json格式存储在数据库中 将数据以文件的存储又分为两种方式: 1.生成.txt文件 2.生成xml文件 那么今天 ...

  4. Android开发8:数据存储(二)——SQLite数据库和ContentProvider的使用

    前言 啦啦啦各位小伙伴们许久不见了~学期末和过年期间自己忙着做其他事没能及时更新Android开发系列课程的博客,实在是罪过罪过~ 好啦~废话不多说,进入我们今天的主题.今天我们将和大家学习其他的数据 ...

  5. Android之间传递数据包

    在Android中 ,我们知道,两个activity之间通讯要用到Intent类,传递简单数据的方式我们也已经知道了.那么,如何在两个activity之间传递数据包呢,这就要用到我们的Bundle类了 ...

  6. Android Intent传递数据

    刚开始看郭大神的<>,实现以下里面的一些例子.Intent传递数据. 我们利用显示的方式进行Intent的启动. 1.启动intent并输入数据. Intent intent=new In ...

  7. Android Activity传递数据使用getIntent()接收不到,揭秘Intent传递数据与Activity启动模式singleTask的关系。

    activity通过intent传递数据的时候,如果activity未启动,那么在这个刚启动的activity里通过getIntent()会获取到这个intent的数据.. 如果要启动的activit ...

  8. Android Bundle传递数据

    1.传递普通数据 Intent intent=new Intent(MainActivity.this,TwoActivity.class); Bundle bundle=new Bundle(); ...

  9. Android开发_Android数据的四种存储方式

    Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQLite.Content Provider和File.由于Android系统中,数据基本都是私有的的,都是存放 ...

随机推荐

  1. python的多线程问题

    在对文件进行预处理的时候,由于有的文件有太大,处理很慢,用python处理是先分割文件,然后每个文件起一个线程处理,启了10个线程,结果还比不起线程慢一些,改成多进程之后就好了. 使用multipro ...

  2. 晶振及COMS电路

    COMS电路:http://www.docin.com/p-246885507.html 简介:无源晶振和有源晶振 电子线路中的晶体振荡器也分为无源晶振和有源晶振两种类型.无源晶振与有源晶振的英文名称 ...

  3. PHP开发环境简析

    单工作机情况 windows + wamp windows + XShell类终端工具 + linux虚拟机 Ubuntu桌面版 自带终端 Mac OS + mamp Mac OS 自带终端 Mac ...

  4. 斯坦福公开课:Developing IOS 8 App with Swift(1-3)心得体会

    最近开始学习Swift开发移动程序.跟随斯坦福大学的公开课进行自学. 这真是一个美好的时代,虽然不能在斯坦福求学,但是可以观看录制的授课录像.讲义,好似老师在给我们上课一样! 心得: 1.每节课信息量 ...

  5. centos7下memcached的安装配置

    memcached 依赖 libevent-devel 首先安装libevent-devel yum -y install libevent-devel 安装完毕! 继续安装memcached yum ...

  6. kubernetes调度之pod优先级和资源抢占

    系列目录 Pod可以拥有优先级.优先意味着相对于其它pod某个pod更为重要.如果重要的pod不能被调度,则kubernetes调度器会优先于(驱离)低优先级的pod来让处于pending状态的高优先 ...

  7. adb tcp 调试

    su setprop service.adb.tcp.port 5555 stop adbd start adbd

  8. MySQL 启动报错:File ./mysql-bin.index not found (Errcode: 13)

    Linux下安装初始化完MySQL数据库之后,使用mysqld_safe启动mysql数据库,如下发现,启动失败 [root@SVNServer bin]# ./mysqld_safe –user=m ...

  9. 浅谈 SOAP

    http://www.ibm.com/developerworks/cn/xml/x-sisoap/ 本文对 SOAP 作了一个初步介绍,给出几个简单示例:接着比较 CORBA,DCOM/COM 与 ...

  10. 如果在 Code First 模式下使用,则使用 T4 模板为 Database First 和 Model First

    web.config里的链接字符串最好和app.config里相同,因为ef的链接字符串需要一些特殊的参数