Java Blackberry持久对象提供问题

Java Blackberry持久对象提供问题,java,blackberry,Java,Blackberry,我正在使用持久存储和持久对象。我能够保存值。我正在将每个基本体存储到一个向量中,然后保存向量。那么现在,当我启动应用程序并说保存三个值时,会发生什么情况。这些值存储在向量中。如果我启动应用程序,请检查这些值,它正确地显示了保存的值。现在,如果我再次说保存两个值,那么向量中保存的总值应该是5。但是当我关闭应用程序并重新启动它时,它只显示我保存的最后两个值,前面三个保存的值不显示。请帮助我 package com.kcrw.ui; import java.util.Random; import n

我正在使用持久存储和持久对象。我能够保存值。我正在将每个基本体存储到一个向量中,然后保存向量。那么现在,当我启动应用程序并说保存三个值时,会发生什么情况。这些值存储在向量中。如果我启动应用程序,请检查这些值,它正确地显示了保存的值。现在,如果我再次说保存两个值,那么向量中保存的总值应该是5。但是当我关闭应用程序并重新启动它时,它只显示我保存的最后两个值,前面三个保存的值不显示。请帮助我

package com.kcrw.ui;
import java.util.Random;

import net.rim.device.api.system.PersistentObject;
import net.rim.device.api.system.PersistentStore;
import java.util.Vector;

import com.kcrw.model.Song;

import net.rim.device.api.util.Arrays;
import net.rim.device.api.util.Persistable;

public class Persist implements Persistable{

    public static PersistentObject abc;
    public static PersistentObject abc1;
    public static PersistentObject abc2;
    public static PersistentObject abc3;
    public static String b;
    public static String c;
    public static String d;
    public static String e;
    public static Vector vect;
    public static Vector xyz=new Vector();
    static {
          abc   = PersistentStore.getPersistentObject(0xb92c8fe20b256b82L);
          abc1   = PersistentStore.getPersistentObject(0xa94f6433aaf45909L);
          abc2   = PersistentStore.getPersistentObject(0xfbe29f690c998fb1L);
          abc3   = PersistentStore.getPersistentObject(0x67a6bd7c03940754L);
    }

    public static void data(){
    synchronized (abc) {

        abc.setContents(((Song) MoreInfoSongDetails.shows.elementAt(MoreInfo.listFieldIndex))
                .getTitle());
        abc.commit();
         }


synchronized (abc1) {

        abc1.setContents(((Song) MoreInfoSongDetails.shows.elementAt(MoreInfo.listFieldIndex))
                .getAirtime());
        abc1.commit();
         }


synchronized (abc2) {

    abc2.setContents(((Song) MoreInfoSongDetails.shows.elementAt(MoreInfo.listFieldIndex))
            .getAlbumImage());
    abc2.commit();
     }
synchronized (abc3) {
      System.out.println("vector size is"+xyz);



    abc3.setContents(xyz);

    abc3.commit();
     }  

}

    public static String getTitle() {
        synchronized (abc) {

            b= (String)abc.getContents();
            //xyz.addElement(b);
            return b;
        }
    }
    public static String getTime() {
        synchronized (abc1) {

            c= (String)abc1.getContents();
            //xyz.addElement(c);
            return c;
        }
    }

    public static String getImage() {
        synchronized (abc2) {

            d= (String)abc2.getContents();
            //xyz.addElement(d);

            return d;
        }

    }
    public static Vector save() {
        synchronized (abc3) {

            vect= (Vector)abc3.getContents();
        int i=vect.size();
        for(int b=0;b<i;b++){
            System.out.println("element at"+b+"is"+vect.elementAt(b));
        }
            return vect;
        }

    }   
}
package com.kcrw.ui;
导入java.util.Random;
导入net.rim.device.api.system.PersistentObject;
导入net.rim.device.api.system.PersistentStore;
导入java.util.Vector;
导入com.kcrw.model.Song;
导入net.rim.device.api.util.array;
导入net.rim.device.api.util.Persistable;
公共类Persist实现持久化{
公共静态持久对象abc;
公共静态持久对象abc1;
公共静态持久对象abc2;
公共静态持久对象abc3;
公共静态字符串b;
公共静态字符串c;
公共静态字符串d;
公共静态字符串e;
公共静态向量;
公共静态向量xyz=新向量();
静止的{
abc=PersistentStore.getPersistentObject(0xb92c8fe20b256b82L);
abc1=PersistentStore.getPersistentObject(0xa94f6433aaf45909L);
abc2=PersistentStore.getPersistentObject(0xfbe29f690c998fb1L);
abc3=PersistentStore.getPersistentObject(0x67a6bd7c03940754L);
}
公共静态无效数据(){
同步(abc){
abc.setContents(((歌曲)MoreInfoSongDetails.shows.elementAt(MoreInfo.listFieldIndex))
.getTitle());
abc.commit();
}
已同步(abc1){
abc1.setContents(((歌曲)MoreInfoSongDetails.shows.elementAt(MoreInfo.listFieldIndex))
.getAirtime());
abc1.commit();
}
同步(abc2){
abc2.setContents(((歌曲)MoreInfoSongDetails.shows.elementAt(MoreInfo.listFieldIndex))
.getAlbumImage());
abc2.commit();
}
已同步(abc3){
System.out.println(“向量大小为”+xyz);
abc3.setContents(xyz);
abc3.commit();
}  
}
公共静态字符串getTitle(){
同步(abc){
b=(字符串)abc.getContents();
//xyz.加法(b);
返回b;
}
}
公共静态字符串getTime(){
已同步(abc1){
c=(字符串)abc1.getContents();
//xyz.加法(c);
返回c;
}
}
公共静态字符串getImage(){
同步(abc2){
d=(字符串)abc2.getContents();
//xyz.加法(d);
返回d;
}
}
公共静态向量保存(){
已同步(abc3){
vect=(Vector)abc3.getContents();
int i=向量大小();

对于(int b=0;b您的代码示例并不出色,但是保存和恢复向量非常简单,如下所示:

我将这一点融入了一个关于对象持久性的小讨论中。还有一个PowerPoint演示文稿,提供了更多的细节


查看这些页面,您应该能够找到您的问题。\

我没有看到任何代码为向量分配任何内容。我还对“保存”函数从持久存储读取向量以及“数据”方法存储向量感到困惑。实际上,我非常抱歉,我注释掉xyz.addElement()的方法在getTitle(0,getImage(),getTime(0)中,我将元素添加到向量xyz中。不应该对其进行注释。但问题仍然是我上面描述的问题。我认为每次调用此类向量xyz时,都会在使用新向量()时重新创建向量xyz,bt如果我不使用new vector,我会得到空指针例外nx以获得您的帮助。问题是,我可以保存并重试一次。但是当我关闭应用程序并再次启动,并保存新值时,旧保存的值将消失,并且只显示新保存的值。每当应用程序启动时,您必须在中读取旧向量。否则,您只需最后再写一遍。下面是我不久前发布的一个软件示例: