从另一个活动访问一个类

发布于 2024-09-15 02:38:11 字数 367 浏览 8 评论 0原文

具有以下设置:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

神魇的王 2024-09-22 02:38:11

不要在首选项活动中重载 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() 上

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);

And then you can create a new preference listener


    OnSharedPreferenceChangeListener prefListener = new OnSharedPreferenceChangeListener() {

        @Override
        public void onSharedPreferenceChanged(
                SharedPreferences sharedPreferences, String key) {
            // Do stuff
        }

    };

You should also unregister the listener in onPause() unless you need it to persist, otherwise unregister it on onStop()

嗼ふ静 2024-09-22 02:38:11

尝试让 MainActivity 实现 OnSharedPreferenceChangeListener 并将其注册到 onCreate() 方法上,如 Falmarri 所说。

Try making MainActivity implement OnSharedPreferenceChangeListener and register it on the onCreate() method as Falmarri said.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文