доступ к классу из другой деятельности - PullRequest
1 голос
/ 22 августа 2010

Имеются следующие настройки:

Класс MainActivity - расширяет активность

класс MyLayout - расширяет представление

Класс Prefs - расширяет PreferenceActivity и реализует OnSharedPreferenceChangeListener

MainActivity создает класс MyLayout и устанавливает его в качестве своего просмотра содержимого. Когда пользователь нажимает на меню, запускается класс Prefs, где пользователь может изменить некоторые настройки.

Я хочу, чтобы, как только пользователь изменил настройку, был вызван перегруженный метод OnsharedPreferenceChanged в классе Prefs, и оттуда я хотел бы вызывать открытые методы для класса MyLayout, который был создан в MainActivity.

Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 22 августа 2010

Не перегружайте метод onSharedPreferenceChanged в настройках предпочтения. Получите экземпляр общего предпочтения в вашей MainActivity, а затем зарегистрируйте onsharedpreferencechangedlistener для этого внутри вашей основной активности



SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);

pref.registerOnSharedPreferenceChangeListener(prefListener);

И тогда вы можете создать новый слушатель предпочтений


    OnSharedPreferenceChangeListener prefListener = new OnSharedPreferenceChangeListener() {

        @Override
        public void onSharedPreferenceChanged(
                SharedPreferences sharedPreferences, String key) {
            // Do stuff
        }

    };

Вы также должны отменить регистрацию слушателя в onPause (), если только он не нужен для сохранения, в противном случае отмените регистрацию в onStop ()

0 голосов
/ 22 августа 2010

Попробуйте заставить MainActivity реализовать OnSharedPreferenceChangeListener и зарегистрировать его в методе onCreate(), как сказал Фальмарри.

...