我正在处理我的Android应用程序的首选项屏幕。如果前一个项目具有特定值,我想禁用(变灰)一个项目。Android:我如何从我的主要活动调用findPreference()?
我已经实现了两个类: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)未定义为e类型MainActivity“)。 我的方法错了吗?我在PreferencesActivity中实现了onSharedPreferenceChanged()方法?如果是这样,我如何在PreferencesActivity中使用MainActivity属性?
您可以分享您所做的代码更改以解决问题吗?我不完全知道你是如何实现它的。 – impossible 2016-07-04 06:59:57