非活动类中的SharedPreference

时间:2012-07-02 17:27:27

标签: android android-preferences

我有一个PreferenceClass课,它扩展了PreferenceActivity。这个类的代码如下:

public class Preferenceclass extends PreferenceActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // setContentView(R.layout.main2);
    addPreferencesFromResource(R.layout.preferences);

}}

我还有一个实现Shakelistener的非活动类SensorListener。这个类的代码如下:

    public class Shakelistener implements SensorListener {
    public void onSensorChanged(int sensor, float[] values) {
    // Some code
    }}

我需要能够从这个非活动类中访问首选项,但我不知道如何执行此操作。

编辑

这是我用来访问共享首选项的代码:

    String PREF_FILE_NAME = "preferences";

    SharedPreferences pref = mContext.getSharedPreferences(PREF_FILE_NAME , Context.MODE_PRIVATE);
    String myListPreference = pref.getString("listpref", "default choice");
    boolean cb = pref.getBoolean("checkBox", false);
    Toast.makeText(mContext, myListPreference+"-"+cb, Toast.LENGTH_LONG).show();

此代码没有错误,但它总是将toast评估为“default choice-false”。

在这种情况下,我应该使用哪个PREF_FILE_NAME?

1 个答案:

答案 0 :(得分:2)

在非活动类的构造函数中获取Context的实例,并使用它来调用所有此类方法。

这样的事情:

public class NonActivityClass implements SensorListener{
Context mContext;
public NonActivtiyClass(Context context) {
this.mContext = context;
}
//Rest of your code
}

然后执行此操作以在Activtiy onCreate()中创建该类的对象:

NonActivityClass nac = new NonActivityClass(this);