如何访问另一个活动中的SharedPreferences?

时间:2013-10-16 11:58:08

标签: android

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

我怎么能这样做?

3 个答案:

答案 0 :(得分:0)

相反,请执行:

SharedPreferences sharedPrefs = PreferenceManager
            .getDefaultSharedPreferences(this);

答案 1 :(得分:0)

  1. 您不应使用Activity实例化new个对象。相反,要么让该类不从Activity继承,要么通过Intent实例化。

  2. 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);