在 android 视图模型中初始化值
initialize value in android viewmodels
我在 viewmodels 中使用 init 方法并在 main activity 访问它时遇到错误 activity。
未解决的参考:loginStatus
我认为它无法访问这个值。
我该如何解决这个问题?
class LoginViewModel: ViewModel() {
init {
if (Firebase.auth.currentUser != null) {
val loginStatus by mutableStateOf(true)
} else {
val loginStatus by mutableStateOf(false)
}
}
}
@AndroidEntryPoint
class MainActivity() : AppCompatActivity() {
private val loginViewModel: LoginViewModelby viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (loginViewModel.loginStatus) {
println("login true")
}
}
}
我尝试用懒惰的方法解决这个问题,但是,它没有用。有什么方法吗?
val loginStatus : Boolean by lazy { mutableStateOf(true)}
你可以像这样在 init 块外写代码
val loginStatus by lazy {
mutableStateOf(Firebase.auth.currentUser != null)
}
or
val loginStatus by lazy {
if (Firebase.auth.currentUser != null) {
mutableStateOf(true)
} else {
mutableStateOf(false)
}
}
我在 viewmodels 中使用 init 方法并在 main activity 访问它时遇到错误 activity。
未解决的参考:loginStatus
我认为它无法访问这个值。
我该如何解决这个问题?
class LoginViewModel: ViewModel() {
init {
if (Firebase.auth.currentUser != null) {
val loginStatus by mutableStateOf(true)
} else {
val loginStatus by mutableStateOf(false)
}
}
}
@AndroidEntryPoint
class MainActivity() : AppCompatActivity() {
private val loginViewModel: LoginViewModelby viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (loginViewModel.loginStatus) {
println("login true")
}
}
}
我尝试用懒惰的方法解决这个问题,但是,它没有用。有什么方法吗?
val loginStatus : Boolean by lazy { mutableStateOf(true)}
你可以像这样在 init 块外写代码
val loginStatus by lazy {
mutableStateOf(Firebase.auth.currentUser != null)
}
or
val loginStatus by lazy {
if (Firebase.auth.currentUser != null) {
mutableStateOf(true)
} else {
mutableStateOf(false)
}
}