2

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

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

    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”字符串的元素数组(即使在重新启动应用程序后)。

是我简单的“汽车”课程。

知道我在这里缺少什么/做错了吗?

提前致谢

4

1 回答 1

2

我明白了,这是一个愚蠢的错误,

问题在于实现 Externalizable 接口,我调用的是“ Util .writeUTF(name);” 在 externalize() 方法中,并尝试在 internalize 方法中使用“ stream .readUTF()”读取它。

只需将“ Util .writeUTF(name)”替换为“ stream .writeUTF(name)”即可。

结果成功了。

于 2012-03-06T08:06:51.310 回答