4.使用剪切板传递复杂数据类型(使用了对象的序列化)


仍然是改动那两处,只是还要声明一个新的数据类型。

package com.naptung.android_global;import java.io.Serializable;public class MyData implements Serializable {private String name;private int age;public MyData(String name, int age) {super();this.name = name;this.age = age;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "MyData [name=" + name + ", age=" + age + "]";}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

MyData myData = new MyData("jack", 23);//将对象转换成字符串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 (Exception e) {// TODO: handle exception}ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);clipboardManager.setText(base64String);Intent intent = new Intent(MainActivity.this,OtherActivity.class);startActivity(intent);

textView = (TextView)this.findViewById(R.id.msg);ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);String msgString = clipboardManager.getText().toString();byte[] base64_byte = Base64.decode(msgString, Base64.DEFAULT);ByteArrayInputStream byteArrayOutputStream = new ByteArrayInputStream(base64_byte);try {ObjectInputStream objectOutputStream = new ObjectInputStream(byteArrayOutputStream);MyData myData =  (MyData)objectOutputStream.readObject();textView.setText(myData.toString());} catch (Exception e) {// TODO: handle exception}



5.使用全局变量


1.先声明一个类MyApp,这里与上面序列化那个类不同之处在于必须继承Application类,而且必须重写onCreate方法:

package com.naptung.myapp;import android.app.Application;public class MyApp extends Application {public String name;public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();setName("张三");}}

2.其他两处改动如下:

button = (Button)this.findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubmyApp = (MyApp)getApplication();myApp.setName("jack");Intent intent = new Intent(MainActivity.this,OtherActivity.class);startActivity(intent);}});

private MyApp myApp;private TextView textView;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.other);textView = (TextView)this.findViewById(R.id.msg);myApp = (MyApp)getApplication();textView.setText("----AppName---" + myApp.getName());}

3.改动Manifest.xml文件,这里需要注意,除了加入Other之外,需要在application中写入:

android:name=".MyApp"


更多相关文章

  1. android Json解析——揭开json解析的神秘面纱
  2. 引用自定义资源需注意数据类型
  3. 【翻译】(26)Android如何绘画视图
  4. Android(安卓)Bundle类
  5. LayoutInflater.inflate()方法的介绍
  6. Android的NDK开发(3)————JNI数据类型的详解
  7. android(9)_数据存储与访问3_scard_login事例
  8. Android的NDK开发(3)————JNI数据类型的详解
  9. android中操纵sqlite数据库

随机推荐

  1. CSDN Androidclient生产 导航帖
  2. Android动态权限管理
  3. 基于TCP和多线程实现无线鼠标键盘-Socket
  4. Android版本对应的API号
  5. android实现页面下方的Tab效果
  6. Eclipse 开发Android 出现 aapt.exe 应用
  7. 打开系统wifi设置界面
  8. Android实现开机自启动无效问题
  9. Validates using resource IDs in a swit
  10. Android屏幕中隐藏标题栏