径向时间选取器对话框到对话框首选项



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

这是库中的径向时间选择器

径向时间选取器对话框.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从外部很好地使用它,并将支持允许更改侦听器否决更改的整个模型。

显然,这仍然是假设活动是FragmentActivityPreferenceActivity不是)。我改用了带有PreferenceFragmentFragmentActivity。如果你需要支持旧版本,有一个github兼容版本:android-support-v4-preferencefragment。

最新更新