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. 引用自定义资源需注意数据类型
  2. android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象
  3. Android:控件的对象修改控件的值
  4. Android的数据处理:使用annotation实现JSON字符串解析为java对象
  5. Android中的Context对象
  6. Android webview与js 交换JSON对象数据
  7. android 上 webkit js 扩展之全局本地对象实现步骤
  8. android Parcelable接口序列化对象

随机推荐

  1. 2011.10.14(2)——— android 仿照微信的图
  2. Android 面试题集 & 答案,助你拿到心仪 Of
  3. Android操作HTTP实现与服务器通信
  4. 基于CentOS 6.4 使用Jenkins 进行Android
  5. Android主线程与子线程之沟通
  6. Android 异步加载图片分析
  7. Android(安卓)AIDL 双向调用的使用及相关
  8. Android[高级教程] 设计模式之七 单例模
  9. android测试框架
  10. Android开发5——文件读写