我想在首选项活动中实现径向时间选择器,因此我必须将径向时间选择器从对话框片段转换为对话框首选项。顺便说一句,我使用更好的选取器库中的径向时间选择器。 我试图转换它但到目前为止没有成功
这是图书馆的径向时间选择器
有人可以帮忙吗?或者任何人对这个问题有另一个想法?答案 0 :(得分:0)
我创建了一个自定义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;
}
});
}
在我的情况下,这是建模一个minutesSinceMidnight,但你明白了。
注意callChangeListener(newValue)
- 这将允许您使用OnPreferenceChangeListener
从外部很好地使用它,并且将支持允许更改侦听器否决更改的整个模型。
显然,这仍然假设活动是FragmentActivity
(PreferenceActivity
不是{}}。我使用FragmentActivity
代替了PreferenceFragment
。如果您需要支持旧版本,那么它的github compat版本:android-support-v4-preferencefragment。