函数没有被调用 Kotlin
Function not getting called Kotlin
我该如何解决这个问题?下面的函数不会运行。我看不到吐司消息。我正在尝试实现一个视图模型。
这是我片段的 onCreateView:
activity?.let {
val viewmodel = ViewModelProviders.of(this).get(Testviewmodel::class.java)
observeInput(viewmodel)
}
这是我要执行的 onCreateView 之外的那个:
private fun observeInput(viewmodel: Testviewmodel) {
viewmodel.Testlist?.observe(viewLifecycleOwner, Observer {
it?.let {
Toast.makeText(context, "inside works", Toast.LENGTH_LONG).show()
}
})
}
这是视图模型:
class Testviewmodel: ViewModel() {
val Testlist: MutableLiveData<ArrayList<String>>? = null
}
viewmodel.Testlist?.observe(viewLifecycleOwner, Observer {
it?.let {
Toast.makeText(context, "inside works", Toast.LENGTH_LONG).show()
}
})
这行不通,因为您的 Testlist
为空(您在此处将其定义为空):
val Testlist: MutableLiveData<ArrayList<String>>? = null
记住 kotlin 具有可空性 (?),这意味着您的函数内部 :
it?.let { Toast.makeText(context, "inside works", Toast.LENGTH_LONG).show()
}
never runs ,因为 viewmodel.Testlist?
被评估为 null 然后什么都不做。
您可以做的一个改变是像这样实现它:
val Testlist: MutableLiveData<ArrayList<String>> = MutableLiveData()
现在,您的可变数据不会为空
在你的视图模型中,你可以做一个 init
块:
init {
Testlist.value = arrayListOf()
}
这会将一个空数组分配给视图模型中可变实时数据的值
我该如何解决这个问题?下面的函数不会运行。我看不到吐司消息。我正在尝试实现一个视图模型。
这是我片段的 onCreateView:
activity?.let {
val viewmodel = ViewModelProviders.of(this).get(Testviewmodel::class.java)
observeInput(viewmodel)
}
这是我要执行的 onCreateView 之外的那个:
private fun observeInput(viewmodel: Testviewmodel) {
viewmodel.Testlist?.observe(viewLifecycleOwner, Observer {
it?.let {
Toast.makeText(context, "inside works", Toast.LENGTH_LONG).show()
}
})
}
这是视图模型:
class Testviewmodel: ViewModel() {
val Testlist: MutableLiveData<ArrayList<String>>? = null
}
viewmodel.Testlist?.observe(viewLifecycleOwner, Observer {
it?.let {
Toast.makeText(context, "inside works", Toast.LENGTH_LONG).show()
}
})
这行不通,因为您的 Testlist
为空(您在此处将其定义为空):
val Testlist: MutableLiveData<ArrayList<String>>? = null
记住 kotlin 具有可空性 (?),这意味着您的函数内部 :
it?.let { Toast.makeText(context, "inside works", Toast.LENGTH_LONG).show()
}
never runs ,因为 viewmodel.Testlist?
被评估为 null 然后什么都不做。
您可以做的一个改变是像这样实现它:
val Testlist: MutableLiveData<ArrayList<String>> = MutableLiveData()
现在,您的可变数据不会为空
在你的视图模型中,你可以做一个 init
块:
init {
Testlist.value = arrayListOf()
}
这会将一个空数组分配给视图模型中可变实时数据的值