[英]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.