0

我在这样的主要活动中有 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)

我该怎么做?

4

3 回答 3

0
  1. 您不应该Activity使用new. 相反,要么使类不继承自Activity,要么通过Intent.

  2. NPE 来自于尝试在构造函数或成员变量初始化程序中将anActivity用作Context之前的ie。onCreate()如果您使用的是基于 - 的实例化,请在活动生命周期中Intent移动需要Contextto或更高版本的代码。onCreate()如果您使该类不是Activity,请传入Context调用者的引用。

于 2013-10-16T12:04:56.953 回答
0

相反,请执行以下操作:

SharedPreferences sharedPrefs = PreferenceManager
            .getDefaultSharedPreferences(this);
于 2013-10-16T12:01:02.430 回答
0

此代码段将为您提供帮助,并且 Shared Preference 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);
于 2013-10-16T12:06:15.860 回答