【发布时间】:2021-05-31 12:14:53
【问题描述】:
我试图弄清楚如何在 MainActivity 中正确使用 viewLifecycleOwner,我已阅读并被告知生命周期与片段一起使用。但是,我没有在我的应用程序中实现片段。在代码中添加观察者时,我使用“this”代替 viewLifecycleOwner。这不会产生任何错误,但最终不会起作用,因为它没有在虚拟设备中正确绑定数据(运行应用程序时,它只显示应用程序的空白页面,没有数据或图像)。到目前为止,我在 MainActivity 中拥有的是以下代码。
class MainActivity : AppCompatActivity() {
private lateinit var viewModel: DrinkViewModel
// Contains all the views
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
// Use Data Binding to get reference to the views
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.drinkButton.setOnClickListener {
onDrinkClicked()
}
viewModel.revenue.observe(this, Observer { newRevenue ->
binding.revenueText.text = newRevenue.toString()
})
viewModel.drinksSold.observe(this, Observer { newAmount ->
binding.amountSoldText.text = newAmount.toString()
})
}
}
【问题讨论】:
-
听起来你没有设置数据和图像
-
您好,感谢您的评论。当有变化时,观察者不会更新图像和数据吗?
-
这取决于您的 ViewModel 代码,这不是问题的一部分
-
正如你之前提到的,我在设置数据和图像时犯了一个错误。我不小心尝试返回字符串中的数字。虽然,它没有抛出错误,但它不会显示数据。我还错误地尝试将数字绑定为文本。谢谢你的帮助
标签: kotlin android-fragments android-lifecycle observers