Android LiveData保留了该值,并允许它观察更改并尊重应用程序组件的生命周期。
目前我的应用程序中有这种方法: ViewState(每个屏幕一个视图状态) 密封类 CategoryViewState { 对象加载:CategoriesViewState() 数据类错误( 瓦尔
在 Activity 中使用 ViewModel 中的变量。最佳实践
我想在活动中使用虚拟机上的三个列表。 这些列表不会随时间改变,永远是一样的,所以它不是一个状态。 我应该对活动执行以下操作吗? 私人价值
无法转换lifecycle-livedata-core-2.8.0.aar以匹配属性(Flutter)
[[[在此处输入图像描述](https://i.sstatic.net/FyXF8U6V.png)](https://i.sstatic.net/BHA1Vyxz.png)](https://i. sstatic.net/JYa53T2C.png) 错误:C:\Users\Appspedia.gradl
如何收集activity中的两个状态流?因为我只消耗了第一个流量。 例如,viewmodel内部是这样的: 类 ExampleViewModel: ViewModel(){ 私有 val 状态 =
具有数据类的 LiveData 不会在 ViewModel 中更新
我想在我的 MainViewModel 中使用我的数据类 AuthData。 de.hsfl.appamigos.capturetheflag 包 导入 androidx.lifecycle.MutableLiveData 数据类 AuthData(var game: MutableLiveData 我想在我的 MainViewModel 中使用我的数据类 AuthData。 package de.hsfl.appamigos.capturetheflag import androidx.lifecycle.MutableLiveData data class AuthData(var game: MutableLiveData<String>) package de.hsfl.appamigos.capturetheflag import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel class MainViewModel : ViewModel() { private val authData: MutableLiveData<AuthData> = MutableLiveData() fun getGame(): LiveData<AuthData> = authData fun setGame(newAuthData: AuthData) { authData.value?.game = newAuthData.game } fun startNewGame(text: String) { val newGame = MutableLiveData("1234") val newAuthData = AuthData(newGame) setGame(newAuthData) } } 当我尝试观察我的片段之一的变化时,它没有得到通知。 package de.hsfl.appamigos.capturetheflag import android.os.Bundle import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController import de.hsfl.appamigos.capturetheflag.databinding.FragmentLobbyBinding class LobbyFragment : Fragment() { ... val mainViewModel: MainViewModel by activityViewModels() override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?, ): View? { // Inflate the layout for this fragment //val root = inflater.inflate(R.layout.fragment_lobby, container, false) val binding = FragmentLobbyBinding.inflate(inflater) val naviGraph = findNavController() mainViewModel.getGame().observe(viewLifecycleOwner) { binding.textViewGameID.text = it.game.toString() } ... return binding.root; //return inflater.inflate(R.layout.fragment_lobby, container, false) } } 我尝试取出数据类,只使用可变的,并且工作正常,所以所有连接都有点正确。 我想这是因为 authData 没有改变,但属性 game 改变了。如何观察属性本身的变化? 我无法解决数据类问题,因为这是我的教授的要求。我可以使用普通课程,但我看不出这有什么帮助。 我猜这是因为 authData 没有改变,但属性游戏改变了。 正是如此。 如何观察属性本身的变化? 观察属性本身。 mainViewModel.getGame().game.observe(viewLifecycleOwner) { binding.textViewGameID.text = it.game.toString() } 或者更新当前观察到的整个对象。 fun setGame(newAuthData: AuthData) { //authData.value?.game = newAuthData.game authData.value = newAuthData } 附注- 你的方法名称很混乱。获取并设置“游戏” 获取并设置一个“AuthData”,它本身有一个“游戏”?如果您要获取并设置“AuthData”,只需将其称为 getAuthData 和 setAuthData。 您在 LiveData 的数据类中有一个 LiveData。听起来不太对。 您的数据类应该只包含简单的类,即数字或字符串等,或其他数据类。此外,当从视图模型中公开时,您的数据类应该是不可变的,也就是说,它们只包含 val 属性。你的数据类应该看起来像这样: data class AuthData(val game: String) 使视图模型适应更改后的数据类,如下所示: class MainViewModel : ViewModel() { private val authData: MutableLiveData<AuthData> = MutableLiveData() fun getGame(): LiveData<AuthData> = authData private fun setGame(newAuthData: AuthData) { authData.value = newAuthData } fun startNewGame(text: String) { val newGame = "1234" val newAuthData = AuthData(newGame) setGame(newAuthData) } } 现在一切都应该正常了。
我已经以不同的方式写了三次这个,但我不断得到一个空的数据框。我忽略了什么?这段代码是一个类的一部分。 导入pytz 将 MetaTrader5 导入为 mt5 导入
java.lang.IllegalStateException:将 LiveData 观察为状态时,CompositionLocal LocalLifecycleOwner 不存在
当从视图模型中观察 LiveData 作为 Activity onCreate 中的状态时,我收到了 IllegalStateException。它抱怨缺少生命周期所有者,但是根据我的理解
我有一个状态流,它为我提供来自 ViewModel 的可变状态流的值,我想做的是,我想根据按钮单击显示隐藏 Web 视图。当值为真时我想要...
如何从 Firestore 获取与另一个 LiveData 的内容相匹配的项目列表的 LiveData?
我的 Android 应用程序使用 Firebase Firestore。我有用户的集合,也有成就的集合。每个成就都有一个所有者列表,它们是用户集合的文档 ID...
我有一个用于两种不同类型的类别的选项卡布局:收入和费用。我使用 CategoriesViewModel 获取所有类别,并观察列表是否有任何更改。当选择一个选项卡时...
我无法使用removeObserver停止片段内实时数据的观察者
我有一个片段,它是活动中的一个选项卡(以及其他几个选项卡)。在片段的一部分中,我想观察一次 fjViewModel 的 Livedata。这是代码: 公共类 JInPersonFragment
多个 MutableLiveData 更改会导致单个 MutableLiveData
在我的android项目中,我有三个MutableLiveData变量。在更改它们的值后,我想更改另一个 MutableLiveData 的值并观察其值以进行 API 调用。是
所以我有一个具体的问题。 我们已经开始重构遗留代码,在这一点上,我们需要采用遗留类。 所以遗留类会进行一些网络调用,并基于响应......
我有一个包含两个字段的视图,一个用于电子邮件,另一个用于电话号码,我需要验证它们并更新视图上的按钮。 有一段代码: @HiltViewModel 班级
RecyclerView 中 LiveData 的观察者 - Kolin
如何在Recycler视图中实现LiveData Observer?我有一个全局变量“someDataChanged”,它从另一个片段更新。任何帮助将不胜感激! GlobalActivit 类...
我的 ViewModel 中有 2 个实时数据对象: 私有 val _myData : LiveData = myRepository.getData() val myDataAvailable: LiveData = _myData.map { it != null } 只要...
LiveData 观察者永远不会在共享 ViewModel 之间被删除
我快疯了。 我有一个在 FragmentA 和 FragmentB 之间共享的 SharedViewModel,其中包含一个 LiveData: 类 SharedViewModel : ViewModel() { 私人 val _searchParameters = MutableLiv...
如何处理 Kotlin Jetpack Paging 3 异常?
我是 kotlin 和 jetpack 的新手,我被要求处理来自 PagingData 的错误(异常),我不被允许使用 Flow,我只被允许使用 LiveData。 这是存储库: ...
我将 Hilt 添加到我的项目中,现在 LiveData 返回错误的对象类型。也许我对代码做了一些错误的更改。 getAllCurrency 返回 LiveData> 但它应该是 LiveDa...
我使用 Room 作为我的 Android TV 应用程序的数据库。 我有四个不同的实体:帐户、类别、渠道、数据。 在我的 MainFragment 中,我并排显示 3 个回收器视图。 第一个显示