【问题标题】:onPreferenceChange method isn't called when Listpreferences changes当 Listpreferences 更改时,不会调用 onPreferenceChange 方法
【发布时间】:2012-12-02 06:50:44
【问题描述】:

我的代码中有一个首选项活动。 当用户更改 ListPreferences 中的单选按钮时,我想显示祝酒词。 我使用了这段代码,但它不起作用。 :(

public class PrefsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.prefs);   
    }

    public void onSharedPreferenceChanged(SharedPreferences arg0, String key) {

        ListPreference listPreference = (ListPreference) findPreference(key);
        listPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                // TODO Auto-generated method stub
                Toast.makeText(PrefsActivity.this, "second", Toast.LENGTH_LONG).show();
                return false;
            }
        });
    }
}

我的问题是什么?

【问题讨论】:

  • 您应该将此新信息编辑到您现有的问题中:Show a Toast when user change setting in preferences activity,而不是创建一个新问题。请参阅FAQ,了解如何让更多人关注您的问题。
  • @Reza_rg : 你有 tryLog.v("ListPreference", "onPreferenceChange"); 看 onPreferenceChange 是否在 logcat 中被调用?
  • @imrankhan 我现在试过了,似乎 onPreferenceChange 没有被调用。我现在该怎么办?
  • @Sam 感谢您的通知,下次我会记住的。
  • @Reza_Rg :然后首先将问题标题更改为 onPreferenceChange 而不是 Toast 没有显示,因为当调用 onPreferenceChange 方法时,Toast 会自动显示 toast 的代码是正确的

标签: android preferences toast


【解决方案1】:

将您的onCreate 代码更改为:

@Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   addPreferencesFromResource(R.xml.prefs);  

   SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
   prefs.registerOnSharedPreferenceChangeListener(this);
}

您没有将registerOnSharedPreferenceChangeListener 添加到PrefsActivity 活动。

【讨论】:

  • 是的!那是我的错,谢谢。 :)
  • 现在,我还有一个问题。 :( 当我单击 listpreferences 中的单选按钮之一时,它会烤我想要的东西,但它不会更新 listpreferences 中的值。
  • @Reza_Rg:你从onPreferenceChange 返回 false - 大声笑 - 你读过它的作用吗? - 在 ρяσѕρєя K - 为什么不取消注册?
  • @Mr_and_Mrs_D 注销什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多