首选项屏幕中的Android计时器->;读取值
我有一个自定义对话框。从首选项屏幕调用该对话框。 一切正常,对话框启动并显示时间选择器 但是我如何获得所选的值呢? 首先,我尝试在首选项的摘要中写入所选的小时数。(因此,变量xxx:) 稍后,我想将这些值保存在SharedReferences中 这就是我现在所拥有的:首选项屏幕中的Android计时器->;读取值,android,preference,timepicker,Android,Preference,Timepicker,我有一个自定义对话框。从首选项屏幕调用该对话框。 一切正常,对话框启动并显示时间选择器 但是我如何获得所选的值呢? 首先,我尝试在首选项的摘要中写入所选的小时数。(因此,变量xxx:) 稍后,我想将这些值保存在SharedReferences中 这就是我现在所拥有的: public class Calendar extends DialogPreference implements TimePicker.OnTimeChangedListener { TimePicker tp; in
public class Calendar extends DialogPreference implements
TimePicker.OnTimeChangedListener {
TimePicker tp;
int xxx;
public Calendar(Context context, AttributeSet attrs) {
super(context, attrs);
initialize();
}
public Calendar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initialize();
}
private void initialize() {
setPersistent(true);
}
@Override
protected View onCreateDialogView() {
tp = new TimePicker(getContext());
tp.setIs24HourView(true);
return tp;
}
@Override
public void onTimeChanged(TimePicker arg0, int arg1, int arg2) {
}
@Override
public void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if (positiveResult) {
// getEditor().
setTitle(getTitle());
setSummary(Integer.toString(xxx));
}
}
private TimePicker.OnTimeChangedListener mTimeSetListener =
new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
xxx=hourOfDay;
}
};
}
非常感谢并致以最诚挚的问候感谢您提出这个问题,它为我提供了一个关于如何创建对话首选项的重要答案 我希望我也能给你一个答案。我稍微修改了您的代码,现在可以存储从对话框中选择的时间:
@Override
protected View onCreateDialogView() {
this.tp = new TimePicker(getContext());
this.tp.setIs24HourView(true);
final String storedValue = getPersistedString("07:00");
final String[] split = storedValue.split(":");
this.tp.setCurrentHour(Integer.parseInt(split[0]));
this.tp.setCurrentMinute(Integer.parseInt(split[1]));
return this.tp;
}
@Override
public void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if (positiveResult) {
final String result = this.tp.getCurrentHour() + ":" + this.tp.getCurrentMinute();
persistString(result);
}
}
当显示该对话框时,我检索存储的值并简单地设置时间选择器的currentHour
和currentMinute
字段。另一种方法是关闭对话框。因为我在输入和输出的过程中都控制了格式,所以非法值应该不会有问题
这就是你想要的吗?谢谢你提出这个问题,它为我提供了一个关于如何创建对话框首选项的重要答案
我希望我也能给你一个答案。我稍微修改了您的代码,现在可以存储从对话框中选择的时间:
@Override
protected View onCreateDialogView() {
this.tp = new TimePicker(getContext());
this.tp.setIs24HourView(true);
final String storedValue = getPersistedString("07:00");
final String[] split = storedValue.split(":");
this.tp.setCurrentHour(Integer.parseInt(split[0]));
this.tp.setCurrentMinute(Integer.parseInt(split[1]));
return this.tp;
}
@Override
public void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if (positiveResult) {
final String result = this.tp.getCurrentHour() + ":" + this.tp.getCurrentMinute();
persistString(result);
}
}
当显示该对话框时,我检索存储的值并简单地设置时间选择器的currentHour
和currentMinute
字段。另一种方法是关闭对话框。因为我在输入和输出的过程中都控制了格式,所以非法值应该不会有问题
这就是您想要的吗?要在共享pref中存储值,请在首选项更改侦听器上实现。
请注意,首选项应该是默认的共享首选项
preferences = PreferenceManager.getDefaultSharedPreferences(context);
editor = preferences.edit();
内部onprefchange
:
if (preference.getKey().equals(getString(R.string.reminder_end_time_key))){
editor.putString("End_Date", String.valueOf(newValue));
editor.apply();
endTimePickerPreference.setSummary((CharSequence)newValue);
}
要将该值存储在shared pref中,请在首选项更改侦听器上实现。
请注意,首选项应该是默认的共享首选项
preferences = PreferenceManager.getDefaultSharedPreferences(context);
editor = preferences.edit();
内部onprefchange
:
if (preference.getKey().equals(getString(R.string.reminder_end_time_key))){
editor.putString("End_Date", String.valueOf(newValue));
editor.apply();
endTimePickerPreference.setSummary((CharSequence)newValue);
}