Android入门篇四:使用剪切板在Activity之间传递对象数据
2013-02-16 20:51
761 查看
使用剪切板在Activity之间传递对象数据,要用到一个特殊的类---android.util.Base64.java,将对象转换成字符串,再在剪切板中放入要传递的数据,在接收端将字符串还原成对象,在把数据取出来,通过例子来看一下如何实现:
工程结构图:
运行结果如下:
MainActivity截图:
OtherActivity截图:
开始上源代码:
MainActivity.java:
OtherActivity.java:
由于main.xml文件比较简单,这里就不给出源代码了
注意在AndroidManifest.xml中对OtherActivity进行声明。
工程结构图:
运行结果如下:
MainActivity截图:
OtherActivity截图:
开始上源代码:
MainActivity.java:
package com.intent.activity; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.os.Bundle; import android.text.ClipboardManager; import android.util.Base64; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { private Button btn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn = (Button)findViewById(R.id.btOpenOtherActivity); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Person person = new Person("wulianghuan","22"); //将对象转换成字符串 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); String base64String = ""; try { ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); objectOutputStream.writeObject(person); base64String = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT); objectOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } //从Android系统中调用剪切板的服务 ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); //在剪切板中放入要传递的数据 clipboardManager.setText(base64String); //定义一个意图 Intent intent = new Intent(MainActivity.this,OtherActivity.class); startActivity(intent); } }); } }
OtherActivity.java:
package com.intent.activity; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.StreamCorruptedException; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.text.ClipboardManager; import android.util.Base64; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class OtherActivity extends Activity { private TextView text_name; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.other); text_name = (TextView) findViewById(R.id.name); //从Android系统中调用剪切板的服务 ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); String getString = clipboardManager.getText().toString(); //字符串还原成对象 byte[] base64_byte = Base64.decode(getString, Base64.DEFAULT); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(base64_byte); try { ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream); Person person = (Person)objectInputStream.readObject(); Log.i("OtherActivity", person.toString()); //设置文本框的数据 text_name.setText(person.toString()); } catch (StreamCorruptedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
由于main.xml文件比较简单,这里就不给出源代码了
注意在AndroidManifest.xml中对OtherActivity进行声明。
相关文章推荐
- Android中级教程之(五)----->不同Activity之间的数据传递,Bundle对象的使用!
- Android判断网络状态是否断开+Android完全关闭应用程序+ 本文讲述了Android中不同Activity之间的数据传递 — Bundle对象的实现(-)+Android中Bundle的使用示例
- Android入门篇三:使用静态变量在Activity之间传递数据
- Android入门篇五:使用全局变量在Activity之间传递数据
- Android入门篇四:使用全局变量在Activity之间传递数据
- Android入门篇二:使用意图在Activity之间传递数据
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- 【Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用】的改进!
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- Android入门篇三:使用静态变量在Activity之间传递数据
- android 开发手记 activity 之间数据的传递 intent 对象的使用
- Android笔记三.不同Activity之间的传递数据(Bundle对象的使用)
- Android使用Intent在Activity之间传递对象[Serializable或者Parcelable]
- android: activity之间传递复杂数据类型[使用Serializable序列化或者Parcelable序列化]
- Android基础 -- Activity之间传递数据(bitmap和map对象)
- 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)
- android 入门 Linearlayout 布局 初级 activity之间数据传递 xml内部定义监听
- Android中在Activity之间传递数据的另一种方法, 使用application context