gpt4 book ai didi

java - PreferenceFragmentCompat 内的 TimePicker(DialogFragment)

转载 作者:行者123 更新时间:2023-12-02 09:41:38 26 4
gpt4 key购买 nike

我正在使用 PreferenceFragmentCompat 开发一个应用程序,我需要向我的首选项添加一个 TimePicker 选项,但是当我单击此选项时,我的应用程序崩溃了。

这是我的代码:

时间偏好:

import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.text.format.DateFormat;

import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;

import java.util.Calendar;


public class TimePreference extends DialogFragment {

@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
return new TimePickerDialog(getActivity(), (TimePickerDialog.OnTimeSetListener) getActivity(), hour, minute, DateFormat.is24HourFormat(getActivity()));
}
}

设置 fragment :

import android.os.Bundle;
import androidx.fragment.app.DialogFragment;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;

import com.sstu.studentcalendar.R;
import com.sstu.studentcalendar.Service.TimePreference;

public class SettingsFragment extends PreferenceFragmentCompat{

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
Preference preference = (Preference)getPreferenceManager().findPreference("timeset");
if (preference != null) {
preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
DialogFragment timePicker = new TimePreference();
timePicker.show(getFragmentManager(), "time picker");
return true;
}
});
}
}

@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {

}
}

最后这是我的 prefs.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent" android:layout_width="match_parent">
<CheckBoxPreference
android:key="notificationBoolean"
android:summary="Включить напоминания"
android:title="Напоминания">
</CheckBoxPreference>
<Preference android:title="Timepicker" android:key="timeset"/>
</PreferenceScreen>

我做错了什么?有没有简单的方法可以显示 PreferenceFragment 中的时间选择器?

最佳答案

您需要扩展 DialogPreference 以获取托管对话框的首选项,并扩展 DialogPreferenceFragmentCompat,以创建包含时间选择器的对话框 - 我建议阅读此文章 medium post - 它详细介绍了设置时间选择器对话框。

关于java - PreferenceFragmentCompat 内的 TimePicker(DialogFragment),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57023014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com