缺少双向数据绑定的 DatePicker 日、月和年属性?

DatePicker day, month & year attributes for two-way data binding missing?

我想通过双向数据绑定获取 DatePicker 的选定日期。 从Googlethis guide之后,我的DatePicker

应该有三个属性
android:year
android:month
android:day

用于双向数据绑定。

但是,这些属性不会出现在我的 DatePicker 中。

我是不是遗漏了一些依赖性,也许吧?如何使用双向数据绑定获取所选日期?

这是DatePickers XML:

<DatePicker
    android:id="@+id/date_picker"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:calendarViewShown="false"
    android:datePickerMode="spinner"
    app:layout_constraintEnd_toEndOf="@id/guideline_end"
    app:layout_constraintStart_toStartOf="@id/guideline_start"
    app:layout_constraintTop_toTopOf="@id/guideline_top"
    />

您可以从侦听器中获取数据:

 date_picker.setOnDateChangedListener { datePicker, year, month, day ->

       Log.v("Rene", "Year: $year Month: $month Day: $day")

 }

或者直接调用DatePicker

  date_picker.dayOfMonth
  date_picker.month
  date_picker.year

我已经做了什么来检查你的问题(我仍然看到关于未知属性的消息,但除了没有问题之外):

在XML中:

<DatePicker
     android:layout_width="wrap_content"
     android:datePickerMode="spinner"
     android:year="@={viewModel.year}"
     android:month="@={viewModel.month}"
     android:day="@={viewModel.day}"
     android:onDateChanged="@{(v, year, month, day) -> viewModel.onDateChanged(year, month, day)}"
     android:layout_height="wrap_content"/>

在视图模型中:

var year: MutableLiveData<Int> = MutableLiveData(2020)
var month: MutableLiveData<Int> = MutableLiveData(5)
var day: MutableLiveData<Int> = MutableLiveData(22)

fun onDateChanged(year: Int, month: Int, day: Int){
    Log.v("Test_Picker", "$year $month $day")
}

所以在日期更改后 ViewModel 的 onDateChanged 调用,我可以在 Fragment

中观察到 LiveData 的 year/month/day 的变化