我在主要活动中有SharedPreferences,如下所示:
public class MainActivity extends SherlockFragmentActivity {
public void showUserSettings() {
SharedPreferences sharedPrefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
Editor editor= sharedPrefs.edit();
editor.putString("userFormat", sharedPrefs.getString("example_list", "2"));
editor.commit();
}
现在我想从SharedPreferences获得价值但是在下面的课程中:
public class ReadFormatSharePerf extends Activity {
private DecimalFormat df;
public String finalFormat(String finalFormat) {
SharedPreferences sharedPrefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
String customFormat = sharedPrefs.getString("userFormat", "#.##");
df = new DecimalFormat(customFormat);
String result = df.format(finalFormat);
return result;
}
我在上面的活动中调用了这段代码:
public class Angles {
...
...
ReadFormatSharePerf my= new ReadFormatSharePerf();
result=my.finalFormat(String.valueOf(finalValue));
}
我发现了错误:
10-16 15:57:24.035: E/AndroidRuntime(10792): java.lang.NullPointerException
atandroid.content.ContextWrapper.getApplicationContext(ContextWrapper.java:101)
我怎么能这样做?
答案 0 :(得分:0)
相反,请执行:
SharedPreferences sharedPrefs = PreferenceManager
.getDefaultSharedPreferences(this);
答案 1 :(得分:0)
您不应使用Activity
实例化new
个对象。相反,要么让该类不从Activity
继承,要么通过Intent
实例化。
NPE来自尝试在Activity
之前使用Context
作为onCreate()
,即在构造函数或成员变量初始值设定项中。如果您使用基于Intent
的即时广告,请将活动生命周期中需要Context
的代码移至onCreate()
或更高版本。如果您使该课程不是Activity
,请传入来自来电者的Context
参考。
答案 2 :(得分:0)
此代码段可以帮助您,共享首选项 KEY 值必须相同
保存值
SharedPreferences preferences = getSharedPreferences("MY_SHARED_PREF",0);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt(String.valueOf(key), value);//store int values, can use string,arrays,etc
editor.commit();
尝试使用此
加载已保存的值
SharedPreferences getProgramPrefs = this.getSharedPreferences(
"MY_SHARED_PREF", MODE_WORLD_READABLE);
int Index = getProgramPrefs.getInt(String.valueOf(key), -1);