Android 活动中的生命周期未在ViewModel中触发
每当调用活动的onCreate时,我都试图在viewModel中执行一个方法(fun onCreateViewModel())。但该方法没有得到执行 视图模型Android 活动中的生命周期未在ViewModel中触发,android,kotlin,android-jetpack,android-viewmodel,Android,Kotlin,Android Jetpack,Android Viewmodel,每当调用活动的onCreate时,我都试图在viewModel中执行一个方法(fun onCreateViewModel())。但该方法没有得到执行 视图模型 class MainActivityViewModel(startingCount : Int) : ViewModel(), LifecycleObserver { var count = 0 init { count = startingCount } fun getCurrentC
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) }
}
}
您必须添加viewmodel作为活动生命周期的观察者。您需要将此添加到活动中
getLifecycle().addObserver(viewModel)
您必须添加viewmodel作为活动生命周期的观察者。您需要将此添加到活动中
getLifecycle().addObserver(viewModel)