如何使用QuietlyCoding NumberPicker的setOnPreferenceChangeListener?
我想要检测NumberPicker
的值何时发生更改。我有此代码对我PreferenceActivity
:如何使用QuietlyCoding NumberPicker的setOnPreferenceChangeListener?
public class MainPrefs extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.addPreferencesFromResource(R.xml.main_preferences);
this.findPreference("SMSSentLimit").setOnPreferenceChangeListener(
new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference,
Object newValue) {
TrackerService.updateStats(Long.decode(newValue.toString()));
return true;
}
});
this.findPreference("NumberPickerLimit").setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference,
Object newValue) {
Log.i("onPreferenceChange", "NumberPicker Changed");
Toast.makeText(getBaseContext(), "CHANGEEEED !!!",
Toast.LENGTH_SHORT).show();
return true;
}
});
}
}
第二个(findPreference("NumberPickerLimit")
)为NumberPicker
,它永远不会被调用,如果我将其更改为onPreferenceClickListener
它的工作原理,但是当我点击的偏好,而不是当我改变我检测价值。
Acording源代码应该叫:
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
saveValue(mPicker.getCurrent());
break;
default:
break;
}
}
private void saveValue(int val) {
getEditor().putInt(getKey(), val).commit();
notifyChanged();
}
What's发生了什么?这是一个错误吗?
编辑 这里是我的XML:
<com.michaelnovakjr.numberpicker.NumberPickerPreference
android:key="NumberPickerLimit"
android:title="@string/NumberPickerTitle"
android:summary="@string/NumberPickerSummary"
picker:defaultValue="1"
picker:startRange="1"
picker:endRange="31" />
只是看着上市here XML文件,看起来你有android:key="demo.preference"
那里。而在这里的代码中,您使用的是findPreference("NumberPickerLimit")
。
是的,但我改变了它,看我的编辑 – Andres
对不起,现在没有更多的想法。 – UgglyNoodle
你'SMSSentLimit'监听器的工作原理? – UgglyNoodle
是的,它的工作原理:) – Andres
NumberPickerPreference是否成功保存了值?当您更改号码时,请关闭对话框并重新打开,是否显示新号码? – UgglyNoodle