我想在首选项活动中实现径向时间选取器,因此我必须将径向时间选取器从对话框片段转换为对话框首选项。顺便说一句,我使用来自更好的选择器库的径向时间选择器。我试图转换它,但到目前为止没有成功
这是库中的径向时间选择器
径向时间选取器对话框.java
有人可以帮忙吗? 或者有人对这个问题有其他想法?
我创建了一个自定义Preference
子类,我们称之为TimePickerPreference
。然后在其中添加此方法,在膨胀首选项时必须调用该方法:
public void setupListener(final FragmentManager fragmentManager){
setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Calendar calendar = getCurrentValueCalendar();
RadialTimePickerDialog timePickerDialog = RadialTimePickerDialog
.newInstance(new RadialTimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(RadialPickerLayout radialPickerLayout, int hour, int minute) {
int newValue = hour * 60 + minute;
if (callChangeListener(newValue))
setMinutesSinceMidnight(newValue);
}
}, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), false);
timePickerDialog.show(fragmentManager, "FRAG_TAG_TIME_PICKER");
return true;
}
});
}
就我而言,这是自午夜以来的几分钟建模,但你明白了。
请注意callChangeListener(newValue)
- 这将允许您使用OnPreferenceChangeListener
从外部很好地使用它,并将支持允许更改侦听器否决更改的整个模型。
显然,这仍然是假设活动是FragmentActivity
(PreferenceActivity
不是)。我改用了带有PreferenceFragment
的FragmentActivity
。如果你需要支持旧版本,有一个github兼容版本:android-support-v4-preferencefragment。