对话首选项的径向时间选择器对话框

时间:2014-01-01 06:00:43

标签: android dialog preference

我想在首选项活动中实现径向时间选择器,因此我必须将径向时间选择器从对话框片段转换为对话框首选项。顺便说一句,我使用更好的选取器库中的径向时间选择器。 我试图转换它但到目前为止没有成功

这是图书馆的径向时间选择器

RadialTimePickerDialog.java

有人可以帮忙吗?或者任何人对这个问题有另一个想法?

1 个答案:

答案 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从外部很好地使用它,并且将支持允许更改侦听器否决更改的整个模型。

显然,这仍然假设活动是FragmentActivityPreferenceActivity不是{}}。我使用FragmentActivity代替了PreferenceFragment。如果您需要支持旧版本,那么它的github compat版本:android-support-v4-preferencefragment