1
我用两个NumberPicker(在自定义类MinuteSecondPicker中)定制了DialogPreference。我选择两个numberPicker的值,当我再次打开我的DialogPreference时,我的值不会恢复(nerver保存我想) 我试过 在onSetInitialValue方法中defaultValue总是'NULL' 在onDialogClosed中,我尝试了这些3种方法:persistString(字符串myvalue的),shouldCommit和shouldPersist - >所有返回 'TRUE' :NumberPicker自定义DialogPreference的值永远不会保存(或永远不能恢复)
public class TimePreference extends DialogPreference {
private int lastMinute = Constante.DEFAULT_WATER_MINUTE; //10
private int lastSecond = Constante.DEFAULT_WATER_SECOND; //00
private MinuteSecondPicker minuteSecondPicker = null;
public static int getMinute(String time) {
String[] pieces=time.split(":");
return(Integer.parseInt(pieces[0]));
}
public static int getSecond(String time) {
String[] pieces=time.split(":");
return(Integer.parseInt(pieces[1]));
}
public TimePreference(Context ctxt, AttributeSet attrs) {
super(ctxt, attrs);
this.setPositiveButtonText(Constante.BT_VALIDER);
this.setNegativeButtonText(Constante.BT_ANNULER);
}
@Override
protected View onCreateDialogView() {
minuteSecondPicker = new MinuteSecondPicker(getContext());
return(minuteSecondPicker);
}
@Override
protected void onBindDialogView(View v) {
super.onBindDialogView(v);
minuteSecondPicker.getMinutePicker().setValue(lastMinute);
minuteSecondPicker.getSecondPicker().setValue(lastSecond);
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if (positiveResult) {
lastMinute = minuteSecondPicker.getMinutePicker().getValue();
lastSecond = minuteSecondPicker.getSecondPicker().getValue();
String time = String.valueOf(lastMinute)+":"+String.valueOf(lastSecond);
//Insertion dans la persistence du téléphone
if(callChangeListener(time)){
persistString(time); //Return True
}
}
}
@Override
protected Object onGetDefaultValue(TypedArray a, int index) {
return(a.getString(index));
}
@Override
protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
String time = null;
int test = 0;
//recupération des valeurs stockées en persistence du mobile
if (restoreValue) {
if(defaultValue == null){
time = String.valueOf(Constante.DEFAULT_WATER_MINUTE)+":"+String.valueOf(Constante.DEFAULT_WATER_SECOND);
}else{
time = getPersistedString(defaultValue.toString());
}
}else{
time = defaultValue.toString();
}
lastMinute = getMinute(time);
lastSecond = getSecond(time);
}
}
我试过很多东西,但没有工作,只要靠近我的应用程序放松我尝试保存的偏好。