android传递数据方式3--通过剪切板传类

使用剪切板的方式不仅能传一般的数据,还可以传递类,这里承接android传递数据方式2主要介绍如何将类转成字符串后传递并还原,关于剪切板的内容在上一篇中有介绍。

1.为了测试传递类,先新建一个一个MyDate的类并实现了可序列化接口,在当中生成一个构造函数,一个set函数,一个get函数和一个toString函数:

public class MyDate implements Serializable{
    private String name;
    private int age;
    public MyDate(String name, int age) {
        this.name = name;
        this.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;
    }
    @Override
    public String toString() {
        return "MyDate{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
2.在MainActivity中实例化一个MyDate类,然后通过一连串数据流操作 奋斗终于将类转成了字符串形式(具体的就是【1】利用类输出流中writeObject方法将这个myDate写入一个字节数组输出流,【2】再利用字节数组输出流的toByteArray方法,将输出流转成字节数组,【3】调用Base64的静态方法encodeToString,将这个字节数据编码成字符串),然后就可以通过剪切板传递类了:

public void onClick(View v) {
                MyDate myDate = new MyDate("sarah", 20);
                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                String base64String = "";
                try {

                    ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
                    objectOutputStream.writeObject(myDate);
                    base64String = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);
                    ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
                    clipboardManager.setText(base64String);
                    Intent intent = new Intent(MainActivity.this, OtherActivity.class);
                    startActivity(intent);

                } catch (Exception e) {

                }
            }
3.在OtherActivity中利用相反的操作就可以把剪切板传递过来的字符串还原成类了:
        ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
        String msgString = clipboardManager.getText().toString();
        byte[] base64_byte = Base64.decode(msgString, Base64.DEFAULT);
        ByteArrayInputStream byteArrayInputStream =new ByteArrayInputStream(base64_byte);
        try{
            ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
            MyDate myDate = (MyDate)objectInputStream.readObject();
            textView.setText(myDate.toString());
        }catch (Exception e){

        }




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值