缺少双向数据绑定的 DatePicker 日、月和年属性?
DatePicker day, month & year attributes for two-way data binding missing?
我想通过双向数据绑定获取 DatePicker
的选定日期。
从Googlethis guide之后,我的DatePicker
、
应该有三个属性
android:year
android:month
android:day
用于双向数据绑定。
但是,这些属性不会出现在我的 DatePicker
中。
我是不是遗漏了一些依赖性,也许吧?如何使用双向数据绑定获取所选日期?
这是DatePicker
s 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 的变化
我想通过双向数据绑定获取 DatePicker
的选定日期。
从Googlethis guide之后,我的DatePicker
、
android:year
android:month
android:day
用于双向数据绑定。
但是,这些属性不会出现在我的 DatePicker
中。
我是不是遗漏了一些依赖性,也许吧?如何使用双向数据绑定获取所选日期?
这是DatePicker
s 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 的变化