Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android数据绑定LiveData-DialogFragment&;中未更改通知;底片_Android_Kotlin_Android Databinding_Android Livedata_Android Viewmodel - Fatal编程技术网

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
上的这一行。非常感谢你。现在可以用了