android - ViewModel 中未触发 Activity 中的生命周期
问题描述
每当调用 Activity 的 onCreate 时,我都试图在 viewModel 中执行一个方法(有趣的 onCreateViewModel())。但是该方法没有被执行。
视图模型
class MainActivityViewModel(startingCount : Int) : ViewModel(), LifecycleObserver {
var count = 0
init {
count = startingCount
}
fun getCurrentCount(): Int{
return count
}
fun getUpdatedCount(): Int {
count ++
return count
}
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
public fun onCreateViewModel(){
Log.i("Jts"," ViewModel created")
}
}
活动
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private var user = User("Jeffin T", "26")
private lateinit var mainActivityViewModel: MainActivityViewModel
private lateinit var mainActivityViewModelFactory: MainActivityViewModelFactory
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// mainActivityViewModel = ViewModelProviders.of()
mainActivityViewModelFactory = MainActivityViewModelFactory(123)
mainActivityViewModel = ViewModelProviders.of(this, mainActivityViewModelFactory)
.get(MainActivityViewModel::class.java)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.tvName.text = mainActivityViewModel.getCurrentCount().toString()
binding.user = user
binding.btnName.setOnClickListener {
binding.tvName.text = mainActivityViewModel.getUpdatedCount().toString()
}
}
private fun displayGreeting() {
binding.apply { tvName.setText("Hello! " + user?.name) }
}
}
解决方案
推荐阅读
- java - 无法自定义条形图条形宽度
- node.js - 快递服务未运行
- elasticsearch - 如何使用 ElasticSearch 在 Grafana 中更改列标题
- oracle - 如何在 jdbc 连接器的 kafka 中创建多个主题和多个表?
- javascript - 将 markdown 文本转换为 React 组件
- python - Python ast.literal_eval 返回格式错误的字符串错误
- java - JAVA -JAR 正在返回版本描述
- apache - 我的服务器不断将 xss-protection 1 更改为 0
- javascript - 使用复选框向数组添加多个项目 - redux react
- flutter - 如何使用一个 StatefulWidget 显示来自多个 HTTP 页面的数据