Android: как мне вызвать findPreference () из моей основной деятельности? - PullRequest
3 голосов
/ 10 марта 2012

Я обрабатываю экран настроек для моего приложения для 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?

1 Ответ

3 голосов
/ 10 марта 2012

findPreference() должен вызываться из класса, реализующего интерфейс PreferenceActivity (PreferencesActivity в моем контексте).MainActivity свойства могут быть доступны через SharedPreferences класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...