2

lwuit.io.Storage を使用しようとしていますが、アプリケーションの実行中は正常に動作します (crud を実行できます) が、アプリケーションを閉じるとデータが消去されます。私は考えました:

  • クラスを「Util.register("Car", Car.class);」で登録する 「initVars()」メソッドで。
  • 「Car」クラスに「Externalizable」インターフェースを実装します。// "getObjectId()" メソッドは "Car" を返します
  • 「Storage.init("myProjectName");」の呼び出し MainMIDlet クラスで
  • MainMIDlet クラスの「Storage.isInitialized()」でストレージが適切に初期化されていることを確認するためのチェック
  • 次を使用して、「車」オブジェクトをベクターで保存しています。

    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」文字列を含む 1 つの要素配列を返します (アプリケーションを再起動した後でも)。

これは私の単純な「車」クラスです。

私が見逃している/ここで間違っていることは何か分かりますか?

前もって感謝します

4

1 に答える 1

2

私はそれを手に入れました、それは愚かな間違いでした、

問題は、Externalizableインターフェースの実装にあり、「Util .writeUTF(name);」を呼び出していました。externalize()メソッドで、internalizeメソッドの「stream.readUTF()」を使用て読み取ろうとしています。

「 Util.writeUTF(name)」を「stream.writeUTF(name)」に置き換えただけです

そしてそれはうまくいった。

于 2012-03-06T08:06:51.310 に答える