如何用剪切板实现数据传递(本文分字符串和对象)
来源:互联网 发布:南京大汉网络做什么 编辑:程序博客网 时间:2024/05/18 03:40
上次的文章提到的用全局变量来实现对数据的传递,而这次采用的是剪切板来实现对数据的传递
这里要注意:在Activity之间传递数据还可以利用一些技巧,不管windows还是Linux操作系统,都会支持一种叫剪切板的技术,也就是某一个程序将一些数据复制到剪切板上,然后其他的任何程序都可以从剪切板中获取数据,在Android系统中也存在此技术。
使用剪切板会用到,ClipboardManager对象,这个对用剪切板会用到,ClipboardManager象用来操作剪切板,但是没有提供public的构造函数(单例模式),需要使用Activity.getSystemService(Context.CLIPBOARD_SERVICE)获取该对象。
在Android-11(Android 3.0)版本之前,利用剪切板传递数据使用setText()和getText()方法,但是在此版本之后,这两个方法就被弃用,转而使用传递ClipData对象来代替。相对于getText和setText而言,利用ClipData对象来传递数据,更符合面向对象的思想,而且所能传递的数据类型也多样化了。
剪切纯粹的字符串,具体代码
MainActivity.java
<span style="font-size:14px;">package net.csdn.blog;import android.annotation.SuppressLint;import android.app.Activity;import android.content.ClipData;import android.content.ClipboardManager;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;public class MainActivity extends Activity {private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@SuppressLint("NewApi")//代码高级优化,自带,自动改错时可选择忽略@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubClipboardManager clickManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);//</span><span style="font-size:14px;">获取剪切板 String name = "Jack";clickManager.setPrimaryClip(ClipData.newPlainText("data", name)); //直接通过ClipboardManager对象中的setPrimaryClip(ClipData clip)来设置数据类</span><pre name="code" class="java"><pre name="code" class="java"><span style="font-size:14px;"> //ClipData.newPlainText("data", name)设置用于初始化数据的内容</span>
//intent的声明和启动意图
Intent intent = new Intent(MainActivity.this,OtherActivity.class);startActivity(intent);}});}}OtherActivity.java
<span style="font-size:14px;">package net.csdn.blog;import android.annotation.SuppressLint;import android.app.Activity;import android.content.ClipData;import android.content.ClipboardManager;import android.os.Bundle;import android.widget.TextView;public class OtherActivity extends Activity {private String content;private TextView textView;@SuppressLint("NewApi")@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.other);ClipboardManager clipManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);ClipData clipData =clipManager.getPrimaryClip();content = clipData.getItemAt(0).getText().toString();textView = (TextView) findViewById(R.id.msg);textView.setText(content);}}</span>main.xml
<span style="font-size:14px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" > <Button android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/button_name" /></RelativeLayout></span>other.xml
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/msg" android:layout_width="fill_parent" android:layout_height="fill_parent" > </TextView></LinearLayout></span>AndroidManifest需要添加
<span style="font-size:14px;"> <activity android:name=".OtherActivity" ></activity></span>
剪切对象,具体代码
MainActivity.java
package net.csdn.blog;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.ObjectInput;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import android.annotation.SuppressLint;import android.app.Activity;import android.content.ClipData;import android.content.ClipboardManager;import android.os.Bundle;import android.util.Base64;import android.widget.TextView;public class OtherActivity extends Activity {private String content;private TextView textView;@SuppressLint("NewApi")@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.other);ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);ClipData clipData =clipboardManager.getPrimaryClip();content = clipData.getItemAt(0).getText().toString();textView =(TextView) findViewById(R.id.msg);byte [] base64_byte=Base64.decode(content, Base64.DEFAULT);ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(base64_byte);try {ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);MyData myData = (MyData) objectInputStream.readObject();textView.setText(myData.toString());} catch (Exception e) {// TODO: handle exception}}}
OtherActivity.java
package net.csdn.blog;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.ObjectInput;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import android.annotation.SuppressLint;import android.app.Activity;import android.content.ClipData;import android.content.ClipboardManager;import android.os.Bundle;import android.util.Base64;import android.widget.TextView;public class OtherActivity extends Activity {private String content;private TextView textView;@SuppressLint("NewApi")@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.other);ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);ClipData clipData =clipboardManager.getPrimaryClip();content = clipData.getItemAt(0).getText().toString();textView =(TextView) findViewById(R.id.msg);byte [] base64_byte=Base64.decode(content, Base64.DEFAULT);ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(base64_byte);try {ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);MyData myData = (MyData) objectInputStream.readObject();textView.setText(myData.toString());} catch (Exception e) {// TODO: handle exception}}}
MyData.java
package net.csdn.blog;import java.io.Serializable;public class MyData implements Serializable {private String name;private String age;public MyData(String name, String age) {super();this.name = name;this.age = age;}@Overridepublic String toString() {return "MyData [name=" + name + ", age=" + age + "]";}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}}
main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" > <Button android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/msg" /></RelativeLayout>
other.xml
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/msg" android:layout_width="fill_parent" android:layout_height="fill_parent" > </TextView></LinearLayout></span>
AndroidManifest需要添加
<span style="font-size:14px;"> <activity android:name=".OtherActivity" ></activity></span>
0 0
- 如何用剪切板实现数据传递(本文分字符串和对象)
- 如何用SendMessage()函数传递字符串
- 如何用SendMessage()函数传递字符串
- 如何用String字符串生成JSONObject和JSONArray数据
- 如何用String字符串生成JSONObject和JSONArray数据
- Android剪切板传递对象
- activity和activity之间传递数据(字符串、集合、对象)
- 使用剪切板传递数据
- 使用剪切板传递数据
- 如何用C语言实现面向对象
- 如何用XML实现高效管理数据
- 如何用java实现数据脱敏
- android利用剪切板来实现数据的传递
- android利用剪切板来实现数据的传递 分类: android
- android利用剪切板来实现数据的传递
- [Android]通过剪切板实现Activity之间传递数据
- 如何用C设计和实现抽象数据类型(封装)
- Android使用剪切板传递数据
- HDU 1498 50 years, 50 colors 二分图最小点覆盖
- 【毕向东Java基础】day01 .Java语言基础
- TOEFL 学习笔记(writing 4)
- JFrame的组成结构
- rac初识之冷热信号
- 如何用剪切板实现数据传递(本文分字符串和对象)
- POJ 1523 SPF(Tarjan 求解连通分量)
- iOS学习笔记(一)---NSMutableString可变数组
- MySQL中一致性非锁定读
- 说说我对spark-sql的job的参数调优
- Toast源代码分析
- Linux CentOS系统启动时遇到的报错
- Innodb中的事务隔离级别和锁的关系
- EditText属性详解