Android数据绑定LiveData-DialogFragment&;中未更改通知;底片
我有一个Android数据绑定LiveData-DialogFragment&;中未更改通知;底片,android,kotlin,android-databinding,android-livedata,android-viewmodel,Android,Kotlin,Android Databinding,Android Livedata,Android Viewmodel,我有一个BottomSheetDialogFragment的布局如下: <data> <variable name="viewModel" type="com.sample.MyViewModel" /> </data> <TextView android:id="@+id/tvValue" android:layout_width="wrap_content"
BottomSheetDialogFragment
的布局如下:
<data>
<variable
name="viewModel"
type="com.sample.MyViewModel" />
</data>
<TextView android:id="@+id/tvValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text='@{String.format("%.1f", viewModel.weight)}'/>
<Button android:id="@+id/cmdUpdate"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:onClick="@{() -> viewModel.updateWeight()}"
android:text="@string/update" />
这是kotlin代码:
// MyViewModel
val weight = MutableLiveData<Double>()
fun updateWeight() {
weight.value?.let {
weight.value = (it + 0.1)
}
}
// BottomSheetDialogFragment bind view model
val myViewModel = ViewModelProviders.of(it, factory).get(MyViewModel::class)
binding.viewModel = myViewModel
// code showing BottomSheet:
val fragment = MyBottomSheetFragment()
fragment.show(fragmentManager, "bottomsheet")
//MyViewModel
val-weight=MutableLiveData()
有趣的更新视图(){
重量。价值?让我来{
weight.value=(it+0.1)
}
}
//BottomSheetDialogFragment绑定视图模型
val myViewModel=ViewModelProviders.of(it,factory).get(myViewModel::class)
binding.viewModel=myViewModel
//显示底页的代码:
val fragment=MyBottomSheetFragment()
片段显示(片段管理器,“底片”)
第一次打开底部板材碎片时,它可以显示重量值,但当我点击按钮更新重量时,什么也没有发生。从调试器中,我可以看到调用了updatewight
方法,并更改了权重值,但没有更新TextView
。这也发生在其他DialogFragment上。如果我使用普通的
片段
DialogFragment和数据绑定是否有问题 你需要打电话
binding.setLifecycleOwner(this)
根据,它允许在LiveData
更改时更新您的视图。您需要调用
binding.setLifecycleOwner(this)
根据,它允许在
LiveData
更改时更新您的视图。太棒了,我忘记了DialogFragment
&BottomSheetDialogFragment
上的这一行。非常感谢你。它现在工作得很好,我忘记了DialogFragment
和BottomSheetDialogFragment
上的这一行。非常感谢你。现在可以用了