开发者

accessing a class from another activity

开发者 https://www.devze.com 2023-01-12 19:52 出处:网络
Have following setup: MainActivity class - extends activity MyLayout class - extends View Prefs class - extends PreferenceActivity and implements OnSharedPreferenceChangeListener

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 开发者_StackOverflow社区was created in the MainActivity.

How can I do this?


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


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

0

精彩评论

暂无评论...
验证码 换一张
取 消