Я обрабатываю экран настроек для моего приложения для 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);
}
}
...
}
Проблема в том, что яневозможно вызвать findPreference в MainActivity («Метод findPreference (String) не определен для типа MainActivity» ...).Мой подход неверен?Должен ли я реализовать метод onSharedPreferenceChanged () в PreferencesActivity?Если да, то как мне использовать свойства MainActivity в PreferencesActivity?