我有一个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?
答案 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);