2017-04-26 8 views
1

私は1〜2週間これを理解しようとしており、できません。アプリ用のHashMapsを保存しています[CodeName One]

私は2つのクラス、MyApplicationStoreを持っています。これは、私の格納コードに何が問題なのかを確認するためのテストプログラムです。

これはこれはMyApplicationクラス

public class MyApplication { 
private Form current; 
private Resources theme; 
private Store o; 

public void init(Object context) { 
    theme = UIManager.initFirstTheme("/theme"); 
    Util.register("Store", Store.class); 
    Toolbar.setGlobalToolbar(true); 
} 

public void start() { 
    if(current != null){ 
     current.show(); 
     return; 
    } 

     Form hi = new Form("Hi World"); 

     TextField enter = new TextField("","Enter Here", 20, TextField.ANY); 
     Button add = new Button("Add"); 

     add.addActionListener((ev)-> 
       o.add(enter.getText() + "", 100)); /*Failing here*/ 

     hi.add(enter).add(add); 

     hi.show(); 

} 

private void save() 
{ 
    Storage.getInstance().writeObject("NameOfFile", o); 
} 

private void load() 
{ 
    o = (Store) Storage.getInstance().readObject("NameOfFile"); 
} 

public void stop() { 
    current = Display.getInstance().getCurrent(); 
    if(current instanceof Dialog) { 
     ((Dialog)current).dispose(); 
     current = Display.getInstance().getCurrent(); 
    } 
} 
public void destroy() { 
} 

} 

あるStoreクラス

public class Store implements Externalizable {  
private static final int VERSION = 1; 
HashMap<String, Integer> data; 

public void externalize(DataOutputStream out) throws IOException 
{ 
    Util.writeObject(data, out); 
} 
public void internalize(int version, DataInputStream in) throws IOException 
{ 
    data = (HashMap<String, Integer>)Util.readObject(in); 
} 
public void add(String s, Integer i) 
{ 
    data.put(s, i); 
} 
public int getVersion() 
{ 
    return VERSION; 
} 
public String getObjectId() 
{ 
    return "Store"; 
} 
} 

私は以前MyApplicationクラスでハッシュマップのポインタを使用しますが、それは同じ場所で失敗しました。

答えて

1

投稿したコードは、どこでもdataハッシュマップを初期化していないようです。 load()メソッドを呼び出していないので、実際にHashmapをどこにでも作成しているわけではありません。したがって、強調表示されている行はNPEで失敗する可能性があります。

将来的には、「ここで失敗する」以外の情報も含める必要があります。スタックトレースがある場合は、常にそれを指定します。スタックトレースがない場合は、スタックトレースが失敗したことをどのように記述する必要があります。

関連する問題