因此,根据我对Preferences api的理解,我可以使用preferences.set(String,String)保存带有唯一值的字符串/ int / etc作为名称。
但是当我这样做时,为什么我会得到一个Hastable nullpointer:
private Preferences pref;
private String prefString, hold;
...
pref.set(prefString, hold);
答案 0 :(得分:4)
private Preferences pref;
private String prefString, hold;
您有declared pref
,但您还没有initialized。这就是为什么
pref.set(prefString, hold);
抛出NullPointerException
,因为null
没有名为set
的函数。 Null什么都没有。 Null 没什么。
通常情况下,我要说你需要用
之类的东西来初始化prefpref = new Preferences();
但是,根据codenameone API for Preferences,它的所有函数都是静态的,应该以这种方式调用:
Preferences.set(prefString, hold);
因此,它的声明行不应该在那里开始。
如果
Preferences.set(prefString, hold);
仍然会引发NullPointerException
,这可能是因为'prefString'也是null
。
答案 1 :(得分:1)
请确保使用实际对象初始化参考“pref”。当您尝试对空的对象进行方法调用时,通常会出现空指针。如果您在一行中看到空指针,请检查正在调用的引用:
String a = null
a.equals(someOtherString);
你知道吗?正在调用一个方法,它抛出空指针,这意味着a必须为null。
答案 2 :(得分:0)
您将null传递给密钥或存储数据的值。首选项不接受空值。要删除空值,您需要明确删除它。