进行以下设置:
MainActivity类 - 扩展活动
MyLayout类 - 扩展视图
Prefs类 - 扩展PreferenceActivity并实现OnSharedPreferenceChangeListener
MainActivity创建一个MyLayout类并将其设置为其contentview。一旦用户按下菜单,Prefs类就会从用户可以更改某些设置的位置开始。
我想要的是,一旦用户更改设置,将调用Prefs类中的重载OnsharedPreferenceChanged方法,并从那里我想调用在MainActivity中创建的MyLayout类的公共方法。
我该怎么做?
答案 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所说。