Dmi*_*kov 5 android mvvm android-databinding android-architecture-components
现在我有这个代码:
class MyFragment : DaggerFragment() {
...
private fun setTimePickerDialog() {
binding.timeButton.setOnClickListener{
val calendar = viewModel.calendar
val curHourOfDay = calendar.get(Calendar.HOUR_OF_DAY)
val curMinute = calendar.get(Calendar.MINUTE)
val dialog = TimePickerDialog(context, { _, hourOfDay, minute ->
val c = Calendar.getInstance()
c.set(1970, 0, 1, hourOfDay, minute)
viewModel.time.value = SimpleDateFormat("HH:mm:ss").format(c.time)
}, curHourOfDay, curMinute, true)
dialog.show()
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
我想利用 DataBinding 库而不是setOnClickListener在我的片段中写入。但我无法将此代码移至ViewModel,因为需要上下文。通过使用 DataBinding 和 MVVM 单击按钮来显示 DatePickerDialog 的简洁方法是什么?
为什么不能在 xml 中使用处理程序而不是视图模型。然后使用处理程序获得点击。在 XML 中 --> 使用一个名为 handler 的变量,其类型是片段的路径
<data class ="binding">
<variable name="handler" type="com.MyFragment"/>
</data>
android:onClick="@{()->handler.onDisplayTimePickerDialogClick()}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4900 次 |
| 最近记录: |