【问题标题】:How to initialise Android DatePicker by Intent?如何通过 Intent 初始化 Android DatePicker?
【发布时间】:2021-09-06 23:33:25
【问题描述】:

我已经显示了一个元素列表。当我点击一个元素时,会打开一个详细视图并显示名称、描述等。此外,详细视图中的日期也可以更改。

目前,当我单击时,日期设置为今天的日期,但 DatePicker 没有显示(init 方法失败)。我知道我做错了什么,并且必须有一个意图/一个活动才能从我的 DetailView 类开始,因为它不是 MainActivity。但不幸的是,我不知道该怎么做。

这是我在 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();
}

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()}"
       />

我还可以按意图从 DetailView 发送邮件和短信。但我只是不知道如何启动 DatePicker 意图。

有什么想法吗?我会很感激。 :)

最好的问候, 杰斯

【问题讨论】:

    标签: java android android-studio android-intent datepicker


    【解决方案1】:

    要显示 DatePicker,您只需在 initDatePicker() 函数中添加 .show() 方法即可。

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

    【讨论】:

    • 哦,是的,你是对的 - 我在 openDatePicker 函数中调用了 .show() - 我没有在其他任何地方调用它。有时它只需要第二双眼睛。谢谢! :)
    • 不用担心。它发生了!快乐编码...@Jessi
    猜你喜欢
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2017-11-08
    相关资源
    最近更新 更多