Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
首选项屏幕中的Android计时器->;读取值_Android_Preference_Timepicker - Fatal编程技术网

首选项屏幕中的Android计时器->;读取值

首选项屏幕中的Android计时器->;读取值,android,preference,timepicker,Android,Preference,Timepicker,我有一个自定义对话框。从首选项屏幕调用该对话框。 一切正常,对话框启动并显示时间选择器 但是我如何获得所选的值呢? 首先,我尝试在首选项的摘要中写入所选的小时数。(因此,变量xxx:) 稍后,我想将这些值保存在SharedReferences中 这就是我现在所拥有的: public class Calendar extends DialogPreference implements TimePicker.OnTimeChangedListener { TimePicker tp; in

我有一个自定义对话框。从首选项屏幕调用该对话框。 一切正常,对话框启动并显示时间选择器

但是我如何获得所选的值呢? 首先,我尝试在首选项的摘要中写入所选的小时数。(因此,变量xxx:) 稍后,我想将这些值保存在SharedReferences中

这就是我现在所拥有的:

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