GetSharedReferences上的java Android SharedReferences NullPointerException
我正在尝试创建一个类,它将处理存储和检索两个用户设置“radius”和“cluster”
加载“设置”活动时,我得到一个空指针异常
来自用户设置的代码片段:
storage = new Persistence();
radius = (EditText) findViewById(R.id.etRadius);
radius.setText(String.valueOf(storage.getRadius())); <-- Problem
处理持久性的类:
public class Persistence extends Activity {
private static final String PREFERENCES = "tourist_guide_preferences";
private SharedPreferences settings;
private SharedPreferences.Editor editor;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
settings = getSharedPreferences(PREFERENCES, 0);
editor = settings.edit();
}
public int getRadius()
{
return settings.getInt("radius", 2000);
}
public int getClusterSize()
{
return settings.getInt("cluster", 50);
}
public void setRadius(int radius)
{
editor.putInt("radius", radius);
editor.commit();
}
public void setClusterSize(int size)
{
editor.putInt("cluster", size);
editor.commit();
}
}
# 1 楼答案
存储=新的持久性();这不会调用持久性活动的onCreate。 最好创建一个通用类。您可以创建一个上下文变量,并使用它来创建SharedReference实例。您应该从活动类调用此常规类
# 2 楼答案
你的
Persistence
类不应该是Activity
。您应该使它成为一个普通类,并将其onCreate
的代码放入这个普通类构造函数中将其更改为如下所示:
在您的活动中,您可以这样实例化这个
Persistence
类: