如何在方法外使用getSharedPreferences?

时间:2016-08-15 10:48:30

标签: android sharedpreferences

我想使用 getSharedPreferences()外部方法初始化SharedPreferences代码,但是失败(内部方法成功),下面是错误信息。怎么解决?

  

"引起:java.lang.NullPointerException:尝试调用虚拟   方法' android.content.SharedPreferences   android.content.Context.getSharedPreferences(java.lang.String,int)'   在null对象引用"

我标记了#34;没有工作"在下面的代码中:

    public class temp extends FragmentActivity {

    //below not work
    SharedPreferences CODE = getSharedPreferences("CODE", MODE_PRIVATE);

    //below also not work
    SharedPreferences CODE;
    {
        CODE= getSharedPreferences("CODE", MODE_PRIVATE);
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //work
        SharedPreferences CODE = getSharedPreferences("CODE", MODE_PRIVATE);

        // also work
        CODE = getSharedPreferences("CODE", MODE_PRIVATE); // defined CODE as class member

    }
}

1 个答案:

答案 0 :(得分:0)

制作另一个类,仅用于获取和设置共享首选项,但您可能需要根据需要更改代码(例如在构造函数中传递上下文)

public class SharedPreference extends Activity{
    public  SharedPreferences preference = getSharedPreferences("TEST", Context.MODE_PRIVATE);
    public  SharedPreferences.Editor editor = preference.edit();
    public SharedPreferences getPreference() {
        return preference;
    }

    public SharedPreferences.Editor getEditor() {
        return editor;
    }
}

你可以在任何地方访问它,比如

SharedPreference pref = new SharedPreference();
SharedPreferences preference = pref.getPreference();