我正在处理Android应用的首选项屏幕。如果前一个项目具有特定值,我想禁用(灰掉它)项目。
我实现了两个类:MainActivity和PreferencesActivity。
在MainActivity中我做了:
public class MainActivity extends Activity implements OnSharedPreferenceChangeListener {
...
public void onCreate (Bundle savedInstanceState) {
...
sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
sharedPrefs.registerOnSharedPreferenceChangeListener(this);
...
}
然后,当用户请求我的偏好时:
startActivity(new Intent(this, PreferencesActivity.class));
然后,为了处理MainActivity中的首选项,我这样做:
@Override
public void onSharedPreferenceChanged (SharedPreferences prefs, String key) {
if ("sport".equals(key)) {
sport = prefs.getString("sport", "");
ListPreference lp = findPreference("match_duration");
if (sport.equals(getString(R.string."sport_soccer"))) {
lp.setEnabled(false);
}
}
...
}
问题是我无法在MainActivity中调用findPreference(“方法findPreference(String)未定义类型MainActivity”...)。 我的方法有误吗?我应该在PreferencesActivity中实现onSharedPreferenceChanged()方法吗?如果是这样,我如何在PreferencesActivity中使用MainActivity属性?
答案 0 :(得分:3)
findPreference()
接口(在我的上下文中为PreferenceActivity
)的类中调用 PreferencesActivity
。可以通过MainActivity
类访问SharedPreferences
个属性。