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

(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. openCV2马拉松第18圈——坐标变换

    计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g 收入囊中 仿射变换 坐标映射 利用坐标映射做一些效果,例如以下 watermark/ ...

  2. windowsclient开发--使你的client执行时记住上次关闭的大小和位置

    差点儿全部的windowsclient都能够调整大小,所以用户依据自己的喜好调整client的大小和位置. 可是当该client退出后,又一次执行client的时候.我们往往又要调整自己喜好的大小和位 ...

  3. 使用HtmlUnit登录百度

    环境 java 1.7 HtmlUnit 2.18 eclipse 4.4.2 maven 配置: <dependency> <groupId>net.sourceforge. ...

  4. 笔记04 WPF的Binding

    oneWay:使用 OneWay 绑定时,每当源发生变化,数据就会从源流向目标. OneTime: 绑定也会将数据从源发送到目标:但是,仅当启动了应用程序或 DataContext 发生更改时才会如此 ...

  5. 使用".."指定git提交范围与"..."指定git提交范围的区别

    http://blog.csdn.net/hansel/article/details/8952967 使用".."(两个点)和"..."(三个点)都可以指定一 ...

  6. Spring Cloud(十一):Spring Cloud Zuul网关 Filter、熔断、重试、高可用的使用方式

    上篇文章主要介绍了Zuul网关使用模式,以及自动转发机制,但其实Zuul还有更多的应用场景,比如:鉴权.流量转发.请求统计等等,这些功能都可以使用Zuul来实现. Zuul的核心 Filter是Zuu ...

  7. 获取当前外网IP地址

    <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script><script>cons ...

  8. 2015最新iherb海淘攻略-图文入门教程-6月免邮

    注:仅仅有首次下单才享有新人优惠10$,大家下单之后千万不要取消后.否则之后则不享有新人优惠. 注:眼下Sino-海淘客国际物流已取消,仅有UCS合众速递. IHerb是美国最热门的海淘海购网站之中的 ...

  9. 个人开发者帐号--我是如何实现在另一台mac上真机调试的

    本文转载至 : http://blog.csdn.net/chenyong05314/article/details/8689534   注:本人有一台mac电脑,之前申请开发者帐号的时候直接就是在这 ...

  10. maven的基本原理和使用

    一.Maven中央存储库 当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载.首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如 ...