1

有以下设置:

MainActivity 类 - 扩展活动

MyLayout 类 - 扩展视图

Prefs 类 - 扩展 PreferenceActivity 并实现 OnSharedPreferenceChangeListener

MainActivity 创建一个 MyLayout 类并将其设置为它的 contentview。一旦用户按下菜单,Prefs 类就会启动,用户可以在其中更改一些设置。

我想要的是,一旦用户更改设置,将调用 Prefs 类中重载的 OnsharedPreferenceChanged 方法,并且我想从那里调用在 MainActivity 中创建的 MyLayout 类的公共方法。

我怎样才能做到这一点?

4

2 回答 2

3

不要在偏好活动中重载 onSharedPreferenceChanged 方法。在您的 MainActivity 中获取共享首选项的实例,然后在您的 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() 上取消注册

于 2010-08-22T11:02:46.373 回答
0

尝试制作MainActivity工具OnSharedPreferenceChangeListener并将其注册到onCreate()Falmarri 所说的方法上。

于 2010-08-22T14:21:35.617 回答