【发布时间】:2019-12-08 16:49:03
【问题描述】:
我有一个具有 ViewModel 的活动,并且该活动观察 ViewModel 的 liveData 当我第一次开始活动时,它可以工作,但是当我再次返回它时,我需要像新的一样,但由于它仍在观察 liveDatas ,它会向我显示旧数据。我该怎么办? (哦,请记住,我无法创建新活动)
这是我的活动
class LoginActivity : AppCompatActivity() {
lateinit var idEditText: EditText
lateinit var createAccountTextView: TextView
lateinit var loginButton: Button
private lateinit var userRepository: UserRepository
private lateinit var loginActivityViewModel: LoginActivityViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
userRepository = UserRepository(application)
loginActivityViewModel = ViewModelProviders.of(
this,
LoginActivityViewModelFactory(userRepository)
).get(LoginActivityViewModel::class.java)
idEditText = findViewById(R.id.idEditText)
loginButton = findViewById(R.id.enterButton)
createAccountTextView = findViewById(R.id.createAccountTextView)
loginButton.setOnClickListener {
val loginID = idEditText.text.toString()
loginActivityViewModel.userEntry(loginID)
}
createAccountTextView.setOnClickListener {
val createAccountIntent = Intent(this, CreateAccountActivity::class.java)
startActivity(createAccountIntent)
finish()
}
}
override fun onResume() {
super.onResume()
loginActivityViewModel.idEditTextMutableLiveData.observe(this, Observer {
idEditText.error = it
})
loginActivityViewModel.onSuccessMutableLiveData.observe(this, Observer {
val mainIntent = Intent(this, MainActivity::class.java)
mainIntent.putExtra(loginValue, UserUI(it.username, it.userId.toInt()))
startActivity(mainIntent)
})
}
}
【问题讨论】:
-
添加您目前尝试过的内容
标签: java android android-studio kotlin mvvm