从另一个活动访问一个类

时间:2010-08-22 10:54:14

标签: android android-activity android-preferences

进行以下设置:

MainActivity类 - 扩展活动

MyLayout类 - 扩展视图

Prefs类 - 扩展PreferenceActivity并实现OnSharedPreferenceChangeListener

MainActivity创建一个MyLayout类并将其设置为其contentview。一旦用户按下菜单,Prefs类就会从用户可以更改某些设置的位置开始。

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

我该怎么做?

2 个答案:

答案 0 :(得分:3)

不要在preferenceactivity中重载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上取消注册()

答案 1 :(得分:0)

尝试MainActivity实施OnSharedPreferenceChangeListener并在onCreate()方法上注册,就像Falmarri所说。