传递数据的场景在于不同页面之间跳转,需要携带数据:简单数据值指的是String, int等数据, 复杂数据指的是类

1.   使用剪贴板传递简单数据方法:

第一个页面里面放数据操作如下:

   ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);  

String text = "简单数据";
clipboardManager.setText(text);
Intent intent = new Intent(this, OtherActivity.class);
startActivity(intent);

第二个页面里面取数据操作如下:

  Intent intent = getIntent();
textView = findViewById(R.id.msgText);
myApp = (MyApp) getApplication();
textView.setText("after changed :" + myApp.getText());

其中MyApp是一个类文件,里面如下:

public class MyApp extends Application {

    private String text;

    public String getText() {
return text;
} public void setText(String text) {
this.text = text;
} }

在manifest文件中加入MyApp类:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.xxx.globalvariables"> <application
android:name=".MyApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> <activity android:name=".OtherActivity"></activity>
</application> </manifest>

2.  使用剪贴板传递复杂数据传递方法

第一个页面存数据的操作如下:

 // 方法二:剪贴板传递复杂数据
MyData myData = new MyData("jack", 24);
// 将对象转换为字符串
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
String base64String = "";
try {
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(myData);
base64String = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT); // 加密
objectOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
ClipboardManager clipboardManager1 = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboardManager1.setText(base64String);
Intent intent1 = new Intent(this, OtherActivity.class);
startActivity(intent1);

第二个页面取数据的方法:

            Intent intent = getIntent();
       ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
String msg = clipboardManager.getText().toString();
ClipBoardTextView = findViewById(R.id.ClipBoardMsgText);
       // 解码
byte[] base64_byte = Base64.decode(msg, Base64.DEFAULT);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(base64_byte);
ObjectInputStream objectInputStream = null;
try {
objectInputStream = new ObjectInputStream(byteArrayInputStream);
MyData myData = (MyData) objectInputStream.readObject(); ClipBoardTextView.setText(myData.toString());
} catch (Exception e) {
e.printStackTrace();
}

MyData是一个类, 里面包括name, age 的get方法和toString()方法, 该类需要实现

Serializable

备注:由于该类为普通类, 没有继承
Application, 所以不用再manifest文件中配置!
												

最新文章

  1. Hive几种数据导出方式
  2. oracle去重等基础问题
  3. Apache配置多域名 AH00548: NameVirtualHost has no effect and will be removed in the next release
  4. js统计字符串中各种字符情况
  5. Webloigic监控
  6. Android核心分析 之十一Android GWES之消息系统
  7. js模块化认识1
  8. 6月10日-IOS应用-日记本
  9. linux 下搭建 ftp
  10. ios7开发者必知
  11. Java并发性和多线程介绍
  12. MyBatis java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
  13. Android———最详细的系统对话框使用
  14. mysql 多列索引的生效规则
  15. UML 教程
  16. python cmd的各种实现方法及优劣
  17. s6-4 TCP 数据段
  18. $Django 数据库图片渲染设计 站点设计 截断函数
  19. CVE-2019-8341 Jinja2 RCE漏洞学习
  20. shell 流程结构

热门文章

  1. unhandled event loop exception解决方案
  2. HDU4417 线段树 + 离线处理
  3. python资料汇总
  4. 奇怪的Unrooted Tests错误
  5. 输出流缓冲的意义 何时缓冲 Stdout Buffering
  6. java菜鸟的Python学习之路(1)
  7. Bootstrap历练实例:响应式导航
  8. java算法面试题:设计一个快速排序。双路快速排序,简单易于理解。
  9. SummerVocation_Learning--java的String类方法总结
  10. ElasticSearch High Level REST API【6】获取集群信息