2

特别是,我想将给定的手势存储在设备的内存中。通常对于这些事情,我使用 SharedPreferences,但由于手势不是原始数据类型,所以在这里不起作用;我还研究了将它存储在内部存储中,这是我想要的,但这里的代码:http: //developer.android.com/guide/topics/data/data-storage.html表明这仅适用于字符串。

有没有一种方法可以轻松地将对象存储在设备内存中,或者我需要将对象转换为字符串,然后在读取文件时再转换回来?

Gesture mGesture;
SharedPreferences stored = getSharedPreferences("Shared Preferences", 0);
SharedPreferences.Editor editor = stored.edit();
byte[] storedGesture = serializeObject(mGesture);
String storedGestureString = new String(storedGesture);
editor.putString("Gesture Password", storedGestureString);
}

public static byte[] serializeObject(Object mObject){
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    try{
        ObjectOutput out = new ObjectOutputStream(bos);
        out.writeObject(mObject);
        out.close();

        byte[] buf = bos.toByteArray();
        return buf;

    } catch (IOException ioe) {
        Log.e("serialize object", "error", ioe);
        return null;
    }
}

我尝试序列化有相关代码,当我在创建手势后点击确认按钮时应用程序崩溃。基本上,确认按钮运行此代码。

4

2 回答 2

2

我认为您可以序列化对象并返回。这样您就可以将它与SharedPreferences内部存储一起使用。

这是关于如何在 Java(以及 Android)中实现序列化的教程 - http://www.tutorialspoint.com/java/java_serialization.htm

于 2013-06-17T13:33:45.407 回答
0

查看 Java 的 Serializable 接口。您可以制作自己的实现 Serializable 的对象来打洞手势,然后将该对象写入内部存储。是在 Android 中使用序列化的链接。

于 2013-06-17T13:33:43.753 回答