无法获取onShared preferenceChanged()工作 [英] Can't get onSharedPreferenceChanged() to work

查看:236
本文介绍了无法获取onShared preferenceChanged()工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想,当用户在我的preferenceActivity选择从列表preference的特定项目显示一个对话框。但是,我不能得到onShared preferenceChanged()工作。我已经把吐司在方法的开始,它并不显示,因此该方法甚至不运行通过,这是为什么?

下面是我的code:(谢谢)

 公共无效onShared共享preferences preferenceChanged(共享preferences,
        字符串键){    Toast.makeText(preferences.this,preFS更改,Toast.LENGTH_SHORT)
            。显示();    如果(key.equals(boolean_ad_type)){        共享preferences = preferenceManager.getDefaultShared preferences(本);
        字符串值=共享preferences.getString(boolean_ad_type,);
        如果(值= NULL&放大器;!&安培; value.equals(弹出式广告)){            Toast.makeText(preferences.this,弹出广告选择
                    Toast.LENGTH_SHORT).show();
        }    }
}

和我需要实现它在这样的活动? (我试过有和没有,没有区别)

 公共类preferences扩展preferenceActivity
                  实现OnShared $ P $ {pferenceChangeListener


解决方案

<一个href=\"http://stackoverflow.com/questions/3799038/onshared$p$pferencechanged-not-fired-if-change-occurs-in-separate-activity\">onShared$p$pferenceChanged如果在不同的活动发生的变化没有被解雇?

 公共类MyActivity扩展preferenceActivity工具
    OnShared $ P $ {pferenceChangeListener@覆盖
保护无效onResume(){
    super.onResume();
    //设置一个监听器,每当一个关键的变化
    GET preferenceScreen()。getShared preferences()
            .registerOnShared preferenceChangeListener(本);
}@覆盖
保护无效的onPause(){
    super.onPause();
    //注销监听器每当重大变化
    GET preferenceScreen()。getShared preferences()
            .unregisterOnShared preferenceChangeListener(本);
}

I wanna display a dialog when the user selects a specific item from a ListPreference in my preferenceActivity. But, I cannot get the onSharedPreferenceChanged() to work. I've put a Toast in the beginning of the method, and it does not show, so the method doesn't even run through, why is this?

Here's my code: (Thanks)

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
        String key) {

    Toast.makeText(Preferences.this, "prefs Changed", Toast.LENGTH_SHORT)
            .show();

    if (key.equals("boolean_ad_type")) {

        sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
        String value = sharedPreferences.getString("boolean_ad_type", "");
        if (value != null && value.equals("Pop-up Ads")) {

            Toast.makeText(Preferences.this, "Pop-up Ads Selected",
                    Toast.LENGTH_SHORT).show();
        }

    }
}

And do I need to implement it in the activity like this? (I've tried with and without, no difference)

    public class Preferences extends PreferenceActivity 
                  implements OnSharedPreferenceChangeListener {

解决方案

onSharedPreferenceChanged not fired if change occurs in separate activity?

public class MyActivity 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);
}

这篇关于无法获取onShared preferenceChanged()工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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