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);
}
}
我試過很多東西,但沒有工作,只要靠近我的應用程序放鬆我嘗試保存的偏好。