【问题标题】:Storing HashMaps for apps [CodeName One]为应用程序存储 HashMaps [CodeName One]
【发布时间】:2017-09-24 10:35:43
【问题描述】:

我已经尝试解决这个问题了一两个星期,但无法做到。

我有两个班级,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 类中使用了一个哈希映射指针,但它在同一位置失败了。

【问题讨论】:

    标签: java hashmap store codenameone


    【解决方案1】:

    您发布的代码似乎没有在任何地方初始化data HashMap。您没有调用您的 load() 方法,并且您实际上并没有在任何地方创建 Hashmap。因此,您突出显示的行可能会因 NPE 而失败。

    将来,您应该提供更多信息,而不仅仅是“失败在这里”。如果有堆栈跟踪,请始终提供。如果没有堆栈跟踪,那么你需要描述你是如何知道它在那里失败的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      相关资源
      最近更新 更多