我想實現Externalizable接口來存儲使用LWUIT-IO的存儲數據。這適用於由字符串,布爾值和整數組成的簡單對象。Java中編寫對象的Externalizable接口implmentation。 (LWUIT)
但是,我有一個由這些類型組成的對象,但也包含上述Externalizable對象的Vector。這似乎弄亂了這個過程,當我嘗試從存儲中檢索對象時,我什麼也得不到。
我認爲它就像Serializable接口,並且主對象內的Externalizable對象被自動處理。我不確定這是否屬實,或者它爲什麼失敗。
對象內部的對象是:
public class Song implements Externalizable{
String name = "examplesongname";
public void externalize(DataOutputStream out) throws IOException {
out.writeUTF(name);
}
public void internalize(int version, DataInputStream in) throws IOException {
name = in.readUTF();
}
public String getObjectId() {
return "pat.objects.Song";
}
public int getVersion() {
return 1;
}
}
包含的對象如下:
public class Playlist implements Externalizable{
String name = "exampleplaylistname";
Vector songs = new Vector();
public void externalize(DataOutputStream out) throws IOException {
out.writeUTF(name);
out.write(songs.size());
Enumeration allItems = songs.elements();
while(allItems.hasMoreElements()){
Externalizable nextItem = (Externalizable) allItems.nextElement();
nextItem.externalize(out);
}
}
public void internalize(int version, DataInputStream in) throws IOException {
name = in.readUTF();
int size = in.readInt();
songs= new Vector();
for(int currentIndex = 0; currentIndex < size; currentIndex++){
Object nextItem = new Object();
((Externalizable)nextItem).internalize(version, in);
songs.addElement(nextItem);
}
}
}
public String getObjectId() {
return "pat.objects.Playlist";
}
public int getVersion() {
return 1;
}
}
我在做什麼錯誤或丟失的是正在播放列表(包含對象)不存儲,而如果我嘗試存儲第一個自己的作品?
請注意,重寫方法與普通Java不同,因爲這是Externalizable接口的LWUIT版本。
謝謝您的回覆!關於遷移到Codename一,我正在編寫的應用程序針對諾基亞Asha手機,所以我使用諾基亞版本的LWUIT http://developer.nokia.com/Resources/Library/LWUIT/#!lwuit- for-nokia-asha-software-platform.html爲本機外觀。 Codename也可以達到這個效果嗎? – Pat
是的,它支持Asha設備和主題。 –
本地諾基亞用戶界面組件如類別欄和操作如何? http://developer.nokia.com/Resources/Library/LWUIT/#!lwuit-for-nokia-asha-software-platform/ux-guidelines/category-bar.html – Pat