【问题标题】:Persist multiple values from a DialogPreference保留 DialogPreference 中的多个值
【发布时间】:2011-11-02 23:17:35
【问题描述】:

我很难从对话框首选项中保留多个值。我有一个 DialogPreference 显示两个时间选择器,我希望每个选择器的时间值保持不变(如下所示为 startTime 和 endTime)。但是,我的代码只从我的 DialogPreference 返回 DefValue,我不明白为什么这些值没有持续存在....感谢您的帮助。代码如下:

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;
}

【问题讨论】:

    标签: android sharedpreferences


    【解决方案1】:

    您的问题的最佳答案在这里:Concise way of writing new DialogPreference classes?

    基于该链接,我认为这里有两个重要的错误,首先setPersistent(boolean) 应该是错误的,其次是您需要使用getEditor()DialogPreference 中存储多个SharedPreferences

    【讨论】:

      猜你喜欢
      • 2013-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-26
      相关资源
      最近更新 更多