繁体   English   中英

首选项屏幕中的DialogPreference摘要

[英]DialogPreference summary in preference screen

嗨!

我有一个包含DialogPreference的首选项屏幕。 当首选项屏幕变得可见时,我希望DialogPreference具有当前时间作为摘要。 如何做到这一点? 可以通过xml完成​​,但我无法在xml文件中设置当前时间。 我试图在onSetInitialValue方法中设置摘要,但由于未显示摘要,因此它似乎不起作用。

这是我的代码:(在下面的示例中,我使用的是随机文本字符串而不是当前时间,因此我不必粘贴用于计算时间的long函数)。

public class TimePreference extends DialogPreference {

  private TimePicker timePicker;
  Calendar calendar = Calendar.getInstance();
  private int hour = calendar.get(Calendar.HOUR_OF_DAY);
  private int minute = calendar.get(Calendar.MINUTE);


  public TimePreference(Context context, AttributeSet attributes) {
    super(context, attributes);
    setPersistent(false);
    //setSummary(getFormatedTime(hour, minute));
  }

  /**
   * Initialize time picker to currently stored time preferences.
   * 
   * @param view
   * The dialog preference's host view
   */
  @Override
  public void onBindDialogView(View view) {
    super.onBindDialogView(view);
    timePicker = (TimePicker) view.findViewById(R.id.time_picker);
    timePicker.setIs24HourView(DateFormat.is24HourFormat(timePicker.getContext()));
    timePicker.setCurrentHour(hour);
    timePicker.setCurrentMinute(minute);
  }

  /**
   * Handles closing of dialog. If user intended to save the settings, selected
   * hour and minute are stored in the preferences with keys KEY.hour and
   * KEY.minute, where KEY is the preference's KEY.
   * 
   * @param okToSave
   * True if user wanted to save settings, false otherwise
   */
  @Override
  protected void onDialogClosed(boolean okToSave) {
    super.onDialogClosed(okToSave);

    if (okToSave) {
      timePicker.clearFocus();
      SharedPreferences.Editor editor = getEditor();
      hour = timePicker.getCurrentHour();
      minute = timePicker.getCurrentMinute();
      editor.putInt(getKey() + ".hour", hour);
      editor.putInt(getKey() + ".minute", minute);
      editor.commit();

      setSummary(getFormatedTime(hour, minute));
    }

  }

  @Override
    protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
      super.onSetInitialValue(restoreValue, defaultValue);
      setSummary("current time here!"); // THIS IS NEVER SHOWN ?? WHY ? 
  }

}

非常感谢你!

在onCreate之后的addPreferencesFromResource

Preference dialogPref = findPreference(ID for dialog in xml);
dialogPref.setSummary(current time here);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM