从另一个活动访问一个类
具有以下设置:
MainActivity 类 - 扩展活动
MyLayout 类 - 扩展 View
Prefs 类 - 扩展 PreferenceActivity 并实现 OnSharedPreferenceChangeListener
MainActivity 创建一个 MyLayout 类并将其设置为其内容视图。一旦用户按下菜单,Prefs 类就会启动,用户可以在其中更改一些设置。
我想要的是,一旦用户更改设置,将调用 Prefs 类中重载的 OnsharedPreferenceChanged 方法,并且从那里我想调用在 MainActivity 中创建的 MyLayout 类上的公共方法。
我该怎么做?
Have following setup:
MainActivity class - extends activity
MyLayout class - extends View
Prefs class - extends PreferenceActivity and implements OnSharedPreferenceChangeListener
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.
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不要在首选项活动中重载 onSharedPreferenceChanged 方法。在 MainActivity 中获取共享首选项的实例,然后在 mainactivity 内部注册一个 onsharedpreferencechangedlistener
然后您可以创建一个新的首选项侦听器
您还应该在 onPause() 中取消注册侦听器,除非您需要它持续存在,否则取消注册它在 onStop() 上
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
And then you can create a new preference listener
You should also unregister the listener in onPause() unless you need it to persist, otherwise unregister it on onStop()
尝试让
MainActivity
实现OnSharedPreferenceChangeListener
并将其注册到onCreate()
方法上,如 Falmarri 所说。Try making
MainActivity
implementOnSharedPreferenceChangeListener
and register it on theonCreate()
method as Falmarri said.