gpt4 book ai didi

android - Android:为什么在尝试分配给变量时不运行Transformation.map?

转载 作者:行者123 更新时间:2023-12-02 13:25:38 24 4
gpt4 key购买 nike

我正在尝试在项目中使用Firebase API,但 View 模型中变量Transformations.mapauthenticationState无法运行。我一直在关注Google的here教程(链接指向该项目的ViewModel)。
我希望以后可以将Transformations.map代码添加到FirebaseUserLiveData文件中,但是我似乎无法弄清楚为什么它不运行。
FirebaseUserLiveData

class FirebaseUserLiveData: LiveData<FirebaseUser?>() {

private val firebaseAuth = FirebaseAuth.getInstance()
private val authStateListener = FirebaseAuth.AuthStateListener { firebaseAuth ->
value = firebaseAuth.currentUser
}


override fun onActive() {
firebaseAuth.addAuthStateListener { authStateListener }
}

override fun onInactive() {
firebaseAuth.removeAuthStateListener(authStateListener)
}
}
SearchMovieFragmentViewModel
class SearchMovieFragmentViewModel : ViewModel() {

enum class AuthenticationState {
AUTHENTICATED, UNAUTHENTICATED, INVALID_AUTHENTICATION
}

var authenticationState = Transformations.map(FirebaseUserLiveData()) { user ->
Log.d("TEST", "in the state function")
if (user != null) {
AuthenticationState.AUTHENTICATED
} else {
AuthenticationState.UNAUTHENTICATED
}
}

SearchMovieFragment
class SearchMovieFragment : Fragment(), MovieSearchItemViewModel {

companion object {
fun newInstance() = SearchMovieFragment()
}

private lateinit var searchMovieFragmentViewModel: SearchMovieFragmentViewModel
private lateinit var binding: SearchMovieFragmentBinding
private lateinit var movieRecyclerView: RecyclerView

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

binding = DataBindingUtil.inflate(inflater, R.layout.search_movie_fragment, container, false)
searchMovieFragmentViewModel = ViewModelProvider(this).get(SearchMovieFragmentViewModel::class.java)
binding.lifecycleOwner = this
binding.viewmodel = searchMovieFragmentViewModel

binding.signOutButton.setOnClickListener {
AuthUI.getInstance().signOut(requireContext())
}

searchMovieFragmentViewModel.authenticationState.observe(viewLifecycleOwner, Observer { state ->
when (state) {
AUTHENTICATED -> searchMovieFragmentViewModel.signedIn = View.VISIBLE
UNAUTHENTICATED -> searchMovieFragmentViewModel.signedIn = View.GONE
}
})
return binding.root
}
}

最佳答案

应该是.addAuthStateListener(authStateListener)而不是{ authStateListener }

关于android - Android:为什么在尝试分配给变量时不运行Transformation.map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64272286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com