从另一个活动访问类 [英] accessing a class from another activity

查看:108
本文介绍了从另一个活动访问类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有以下设置:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆