accessing a class from another activity

2019-08-07 18:43发布

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?

2条回答
仙女界的扛把子
2楼-- · 2019-08-07 19:01

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

查看更多
SAY GOODBYE
3楼-- · 2019-08-07 19:10

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

查看更多
登录 后发表回答