从另一个活动访问类 [英] accessing a class from another activity
问题描述
有以下设置:
MainActivity类 - 扩展活动
MainActivity class - extends activity
MyLayout类 - 扩展视图
MyLayout class - extends View
preFS类 - 扩展了preferenceActivity和工具OnShared preferenceChangeListener
Prefs class - extends PreferenceActivity and implements OnSharedPreferenceChangeListener
MainActivity创建一个MyLayout类,并将其设置为内容查看。一旦菜单上的用户presses,preFS类开始,用户可以更改某些设置。
MainActivity creates a MyLayout class and sets it as its contentview. Once the user presses on the menu, Prefs class starts where the user can change some settings.
我要的是,一旦用户更改了设置,在preFS类重载Onshared preferenceChanged方法将被调用,并从那里,我想调用上是MyLayout类的公共方法在MainActivity创建。
What I want is that, once the user changes a setting, the overloaded OnsharedPreferenceChanged method in the Prefs class will be called and from there I would like to invoke public methods on the MyLayout class that was created in the MainActivity.
我怎样才能做到这一点?
How can I do this?
推荐答案
不要超载在preferenceactivity onShared preferenceChanged方法。获取的共享preference在MainActivity一个实例,然后在你的mainactivity的里面
Don't overload onSharedPreferenceChanged method in preferenceactivity. Get an instance of the shared preference in your MainActivity, and then register an onsharedpreferencechangedlistener on that inside of your mainactivity
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
pref.registerOnSharedPreferenceChangeListener(prefListener);
然后你就可以创建一个新的preference监听器
And then you can create a new preference listener
OnSharedPreferenceChangeListener prefListener = new OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {
// Do stuff
}
};
您也应该取消注册在的onPause(),除非你需要它坚持监听,否则注销它的onStop()
You should also unregister the listener in onPause() unless you need it to persist, otherwise unregister it on onStop()
这篇关于从另一个活动访问类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!