android-livedata 相关问题

Android LiveData保留了该值,并允许它观察更改并尊重应用程序组件的生命周期。

无法转换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

回答 0 投票 0

Android中如何收集多个状态流

如何收集activity中的两个状态流?因为我只消耗了第一个流量。 例如,viewmodel内部是这样的: 类 ExampleViewModel: ViewModel(){ 私有 val 状态 =

回答 3 投票 0

具有数据类的 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) } } 现在一切都应该正常了。

回答 2 投票 0

从metatrader5获取当前报价数据

我已经以不同的方式写了三次这个,但我不断得到一个空的数据框。我忽略了什么?这段代码是一个类的一部分。 导入pytz 将 MetaTrader5 导入为 mt5 导入

回答 1 投票 0

java.lang.IllegalStateException:将 LiveData 观察为状态时,CompositionLocal LocalLifecycleOwner 不存在

当从视图模型中观察 LiveData 作为 Activity onCreate 中的状态时,我收到了 IllegalStateException。它抱怨缺少生命周期所有者,但是根据我的理解

回答 1 投票 0

在数据绑定中未观察到 Stateflow 值

我有一个状态流,它为我提供来自 ViewModel 的可变状态流的值,我想做的是,我想根据按钮单击显示隐藏 Web 视图。当值为真时我想要...

回答 2 投票 0

如何从 Firestore 获取与另一个 LiveData 的内容相匹配的项目列表的 LiveData?

我的 Android 应用程序使用 Firebase Firestore。我有用户的集合,也有成就的集合。每个成就都有一个所有者列表,它们是用户集合的文档 ID...

回答 1 投票 0

如何在两个不同的选项卡中处理相同的数据

我有一个用于两种不同类型的类别的选项卡布局:收入和费用。我使用 CategoriesViewModel 获取所有类别,并观察列表是否有任何更改。当选择一个选项卡时...

回答 1 投票 0

我无法使用removeObserver停止片段内实时数据的观察者

我有一个片段,它是活动中的一个选项卡(以及其他几个选项卡)。在片段的一部分中,我想观察一次 fjViewModel 的 Livedata。这是代码: 公共类 JInPersonFragment

回答 1 投票 0

多个 MutableLiveData 更改会导致单个 MutableLiveData

在我的android项目中,我有三个MutableLiveData变量。在更改它们的值后,我想更改另一个 MutableLiveData 的值并观察其值以进行 API 调用。是

回答 1 投票 0

如何将多个实时数据收集为一个流程?

所以我有一个具体的问题。 我们已经开始重构遗留代码,在这一点上,我们需要采用遗留类。 所以遗留类会进行一些网络调用,并基于响应......

回答 1 投票 0

LiveData 不返回值可能存在什么问题

我有一个包含两个字段的视图,一个用于电子邮件,另一个用于电话号码,我需要验证它们并更新视图上的按钮。 有一段代码: @HiltViewModel 班级

回答 1 投票 0

RecyclerView 中 LiveData 的观察者 - Kolin

如何在Recycler视图中实现LiveData Observer?我有一个全局变量“someDataChanged”,它从另一个片段更新。任何帮助将不胜感激! GlobalActivit 类...

回答 3 投票 0

LiveData初始化

我的 ViewModel 中有 2 个实时数据对象: 私有 val _myData : LiveData = myRepository.getData() val myDataAvailable: LiveData = _myData.map { it != null } 只要...

回答 2 投票 0

LiveData 观察者永远不会在共享 ViewModel 之间被删除

我快疯了。 我有一个在 FragmentA 和 FragmentB 之间共享的 SharedViewModel,其中包含一个 LiveData: 类 SharedViewModel : ViewModel() { 私人 val _searchParameters = MutableLiv...

回答 1 投票 0

如何处理 Kotlin Jetpack Paging 3 异常?

我是 kotlin 和 jetpack 的新手,我被要求处理来自 PagingData 的错误(异常),我不被允许使用 Flow,我只被允许使用 LiveData。 这是存储库: ...

回答 3 投票 0

LiveData 返回错误的对象

我将 Hilt 添加到我的项目中,现在 LiveData 返回错误的对象类型。也许我对代码做了一些错误的更改。 getAllCurrency 返回 LiveData> 但它应该是 LiveDa...

回答 2 投票 0

在应用程序启动时从房间数据库访问数据,以允许无延迟导航

我使用 Room 作为我的 Android TV 应用程序的数据库。 我有四个不同的实体:帐户、类别、渠道、数据。 在我的 MainFragment 中,我并排显示 3 个回收器视图。 第一个显示

回答 1 投票 0

在 kotlin 中更改列表时适配器不会更改

我有一个列表和一个适配器,我从服务中获取列表,当列表到达时,我将其交给带有submitlist的适配器。当我创建提交列表时,列表会正确显示,但是当它转到...

回答 1 投票 0

Android 的干净架构 (MVVM) 中的视图、视图模型、用例、存储库、服务和 dao 之间的通信

使用君主国数据库,dao 提供 liveData。存储库使用 liveData 上的 .asFlow 将 liveData 作为流程提供给用例。 useCase 需要将流程返回到 ViewModel a...

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.