У меня проблемы с сохранением нескольких значений в настройках диалога.У меня есть DialogPreference, который показывает два средства выбора времени, и я хотел бы, чтобы значения времени для каждого средства выбора сохранялись (показано ниже как startTime и endTime).Однако мой код возвращает только значение DefValue из моей DialogPreference, и я не понимаю, почему эти значения не сохраняются .... Спасибо за вашу помощь.Код ниже:
public class TimePickerPreference extends DialogPreference implements
TimePicker.OnTimeChangedListener {
private String startTime;
private String endTime;
private String defaultValue;
public TimePickerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
initialize();
}
public TimePickerPreference(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
initialize();
}
private void initialize() {
setPersistent(true);
}
@Override
protected View onCreateDialogView() {
LinearLayout layout = new LinearLayout(getContext());
layout.setOrientation(LinearLayout.VERTICAL);
TextView tvStart = new TextView(getContext());
TimePicker tp = new TimePicker(getContext());
TextView tvEnd = new TextView(getContext());
TimePicker tp2 = new TimePicker(getContext());
tvStart.setText("From:");
tvEnd.setText("To:");
tvStart.setTextSize(14);
tvEnd.setTextSize(14);
tp.setOnTimeChangedListener(this);
int h = getHour();
int m = getMinute();
if (h >= 0 && m >= 0) {
tp.setCurrentHour(h);
tp.setCurrentMinute(m);
}
tp.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
final long starttime = (minute * 60 + hourOfDay * 60 * 60) * 1000;
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
startTime = format.format(starttime);
persistString(startTime);
}
});
tp2.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
final long endtime = (minute * 60 + hourOfDay * 60 * 60) * 1000;
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
endTime = format.format(endtime);
persistString(endTime);
}
});
layout.addView(tvStart);
layout.addView(tp);
layout.addView(tvEnd);
layout.addView(tp2);
return layout;
}