2012-03-05 124 views
2

我试图使用lwuit.io.Storage,它可以在应用程序运行时正常工作(我可以做crud),但它的数据在关闭应用程序后清除。 我考虑过:lwuit.io.Storage在关闭应用程序后清除

  • 注册我的类与“Util.register(”Car“,Car.class);”在“initVars()”方法中;
  • 在“Car”类中实现“Externalizable”接口。 //“getObjectId()”方法返回“Car”
  • 调用“Storage.init(”myProjectName“);”在MainMIDlet类
  • 检查,以确保存储与“Storage.isInitialized()”正确初始化在MainMIDlet类
  • 我存储我的“车”对象以矢量,使用:

    Car c = new Car("ford", 1918); 
    
    Vector v = (Vector) Storage.getInstance().readObject("cars"); 
    if (v == null) { 
        v = new Vector(); 
    } 
    v.addElement(c); 
    Storage.getInstance().writeObject("cars", v); 
    
    Vector test = (Vector) Storage.getInstance().readObject("cars"); 
    if (test.lastElement() instanceof Car){ 
        Car c1 = (Car) test.lastElement(); 
        System.err.println(c1); 
    } 
    
  • 回避调用“Storage.getInstance()。clearStorage();”代码中的任何地方!

  • “Storage.getInstance()。listEntries();”返回一个包含“cars”字符串的元素数组(即使重新启动应用程序后)。

this是我的简单“汽车”类。

任何想法我失踪/做错了吗?

在此先感谢

+0

我试图用“字符串”而不是“矢量”进行测试,它工作正常。关闭应用程序后保存在存储中的字符串。 – 2012-03-05 17:32:39

回答

2

我得到了它,这是一个愚蠢的错误,

的问题是在执行外部化inteface, 我打电话 “的Util .writeUTF(名);”在externalize()方法中,并尝试在内部化方法中使用“ .readUTF()”读取它。

简单地更换 “的Util .writeUTF(名称)” 与 “ .writeUTF(名称)”。

它解决了。

+0

现在我只是想知道什么是Util.writeUTF()?! :) – 2012-03-06 08:08:28

+3

使用Util.readUTF。它允许字符串为空。 – 2012-03-06 10:04:06