在Android的分配监听器preference挂线时preferenceChangeListener被称为 [英] setOnPreferenceChangeListener is called when assigning listener to preference in Android

查看:273
本文介绍了在Android的分配监听器preference挂线时preferenceChangeListener被称为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的preferences屏幕,我设置的听众一些preferences上的onCreate()。结果
但我注意到听众被称为每次preference加载时间(可能在的onCreate())。结果
有没有一种方法,以prevent呢?结果
我当然要听者只有当给定键的preference值更改为被调用。

In my preferences screen I set listeners to some preferences on onCreate().
But I've noticed the listener is called every time the preference is loaded (probably on the onCreate()).
Is there a way to prevent this ?
I want of course the listener to be called only when the preference value in the given key is changed.

感谢

推荐答案

您可以实现这个方法。您需要注册您的听众在 onResume 的onPause 注销。这样,当你的活动作为初始更改preferences值创建它不会被调用已经发生了。

You can achieve that this way. You need to register your listener in onResume and unregister in onPause. This way it won't get called when your activity is created as the initial changes to the preferences values have already taken place.

public class SettingsActivity extends PreferenceActivity
    implements OnSharedPreferenceChangeListener {

    @Override
    protected void onResume() {
        super.onResume();

        // Set up a listener whenever a key changes
        getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        // Unregister the listener whenever a key changes
        getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
    }

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
        String key) {
        // Let's do something a preference value changes
    }

}

这篇关于在Android的分配监听器preference挂线时preferenceChangeListener被称为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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