简体   繁体   English

如何通过 Intent 初始化 Android DatePicker?

[英]How to initialise Android DatePicker by Intent?

I've got a list of elements displayed.我有一个显示的元素列表。 When I click on one element, a detail view is opening and displaying name, description etc. Also a date shall be changeable in the detail view.当我单击一个元素时,将打开一个详细信息视图并显示名称、描述等。详细信息视图中的日期也可以更改。

For now, the date is set to today's date when I click, but the DatePicker does not show up (init method fails).现在,当我单击时,日期设置为今天的日期,但 DatePicker 没有显示(init 方法失败)。 I know I am doing something wrong and that there has to be an intent/an activity to start from my DetailView class, since it's not the MainActivity.我知道我做错了什么,并且必须有一个意图/活动才能从我的 DetailView 类开始,因为它不是 MainActivity。 But unfortunately, I have no idea how to do it.但不幸的是,我不知道该怎么做。

This is my code in DetailView.java:这是我在 DetailView.java 中的代码:

public void onDateChange() {
    initDatePicker();
    dateButton = findViewById(R.id.itemDateButton);
    dateButton.setText(getTodaysDate());

} 
private String getTodaysDate() {
    Calendar cal = Calendar.getInstance();
    int year = cal.get(Calendar.YEAR);
    int month = cal.get(Calendar.MONTH);
    month = month + 1;
    int day = cal.get(Calendar.DAY_OF_MONTH);
    return makeDateString(day, month, year);
}

private void initDatePicker() {
    DatePickerDialog.OnDateSetListener dataSetListener = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
            month = month + 1;
            String date = makeDateString(dayOfMonth, month, year);
            dateButton.setText(date);
        }
    };

    Calendar cal = Calendar.getInstance();
    int year = cal.get(Calendar.YEAR);
    int month = cal.get(Calendar.MONTH);
    int day = cal.get(Calendar.DAY_OF_MONTH);

    int style = AlertDialog.THEME_HOLO_LIGHT;

    datePickerDialog = new DatePickerDialog(this, style, dataSetListener, year, month, day);
}

public void openDatePicker(View view) {
    datePickerDialog.show();
}

The xml: xml:

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/itemDateText"
            android:layout_marginTop="16dp"
            android:layout_marginBottom="16dp"
            android:text="Date"
            app:layout_constraintTop_toBottomOf="@id/itemDescriptionWrapper"
        />

       <Button
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:id="@+id/itemDateButton"
           android:text="Change date"
           style="?android:spinnerStyle"
           app:layout_constraintTop_toBottomOf="@id/itemDateText"
           android:onClick="@{() -> controller.onDateChange()}"
       />

I'm also able to send mails and sms from the DetailView by intent.我还可以有意地从 DetailView 发送邮件和短信。 But i just don't know how to start a DatePicker intent.但我只是不知道如何开始 DatePicker 意图。

Any ideas?有任何想法吗? I would be very grateful.我会很感激。 :) :)

Best regards, Jess最好的问候,杰斯

To show the DatePicker, All you require is to add .show() method of DatePickerDialog inside your initDatePicker() function.要显示的DatePicker,所有你需要是增加.show()的方法DatePickerDialog您的内部initDatePicker()函数。

datePickerDialog = new DatePickerDialog(this, style, dataSetListener, year, month, day);    
datePickerDialog.show();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM