在Android上的“首选项”屏幕中使用TimePicker或DatePicker

时间:2013-09-19 21:56:55

标签: android datepicker timepicker preferencescreen

我正在试图弄清楚如何为我正在构建的应用程序实现数据和时间选择器。我似乎无法找到一种内置的方式来允许用户设置他们退出的日期。有一种优雅的方式来实现吗?我需要能够提取日,月,年,小时和分钟值以计算毫秒数。关于可以实现这一目标的任何建议?

1 个答案:

答案 0 :(得分:8)

对于PreferenceScreen中的时间/日期选择器,您可以使用onPreferenceClickListener(首选项)调用对话框。在DatePickerDialog.OnDateSetListener中使用TimePickerDialog.OnTimeSetListenerPreferenceActivity来检索所选的日期/时间。

SettingsActivity.java

public class SettingsActivity extends PreferenceActivity implements DatePickerDialog.OnDateSetListener {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);

        Preference btnDateFilter = (Preference) findPreference("btnDateFilter");
        btnDateFilter.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
            @TargetApi(Build.VERSION_CODES.HONEYCOMB)
            @Override
            public boolean onPreferenceClick(Preference preference) {
                showDateDialog();
                return false;
            }
        });
    }

    @Override
    public void onDateSet(DatePicker datePicker, int i, int i2, int i3) {
        Log.i("dasd","year "+i+" month "+i2+" day "+i3);
    }

    private void showDateDialog(){
        // Use the current date as the default date in the picker
        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);
        new DatePickerDialog(this,this, year, month, day).show();

    }
}

preference.xml

<Preference
    android:key="btnDateFilter"
    android:summary="Reschedule using current setting"
    android:title="Reschedule" />