android-viewmodel 相关问题

Jetpack Compose 无法观察 MutableLiveData

查看 viewModel.todoLists.observe(lifecycleOwner){ it?.let { label.value = it.toString() } } 视图模型 val todoLists : MutableLiveData = MutableLiveData() ...

回答 2 投票 0

Android:使用依赖项 ViewModelProviderFactory 初始化 ViewModel 的正确方法

我有两个 ViewModel,它们依赖于其他对象,而这些对象又可能依赖于上下文 (SettingsDataStore)。现在为了让上下文远离我的 ViewModels,我正在关注

回答 1 投票 0

Android Hilt 将“辅助”参数传递给 ViewModel 构造函数

至于 2023,除了这种方式之外,还有更好或更少的样板方法将辅助参数注入 ViewModel 吗? 类 PlantDetailViewModel @AssistedInject 构造函数( plantRepos...

回答 0 投票 0

将 android 中的数据库持久状态和仅 UI 状态与 kotlin 相结合的好方法是什么?

我正在使用 Jetpack compose 和 Room 作为数据库解决方案为 android 编写一个 Todo 应用程序。 对于每个待办事项/任务,我都有一些数据需要保存在数据库中(例如文本、截止日期……)和……

回答 1 投票 0

是否可以按照干净的架构将活动实例传递给视图模型

我有一个视图模型,我正在将活动实例传递给它。但是,我并没有强迫视图模型只接受我的活动实例,而是 Android 的活动。 所以基本上,我...

回答 1 投票 0

GoogleMap 和 ViewModel

我有一个包含片段作为地图的屏幕 XML 我有一个包含片段作为地图的屏幕 XML <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <androidx.appcompat.widget.Toolbar app:layout_constraintTop_toTopOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/design_default_color_background" android:fitsSystemWindows="true" android:minHeight="?attr/actionBarSize" app:theme="@style/ToolbarColoredBackArrow"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/imageView_back" android:layout_width="48dp" android:layout_height="48dp" android:padding="12dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:srcCompat="@drawable/back" /> <TextView android:id="@+id/toolbar_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:textColor="@color/colorTextBlack" android:textSize="18sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> </androidx.appcompat.widget.Toolbar> <fragment app:layout_constraintTop_toBottomOf="@id/toolbar" app:layout_constraintBottom_toTopOf="@id/ll_bottom" android:id="@+id/googleMap" class="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="0dp" /> <LinearLayout android:id="@+id/ll_bottom" app:layout_constraintBottom_toBottomOf="parent" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="4dp" android:gravity="center"> <View app:layout_constraintBottom_toBottomOf="parent" android:layout_width="100dp" android:layout_height="8dp" android:background="@drawable/bottom_sheet_divider"/> </LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout> 在OnViewCreated中,我先设置map,再设置viewModel 然后我才得到包并在 viewModel 中设置值以观察变量 override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setupMap() viewModel = ViewModelProvider(requireActivity(), viewModelFactory).get(MapNewTwoViewModel::class.java) setupViewModel() getBundle() } SetupMap 没有什么特别之处 private fun setupMap(){ val fragment = childFragmentManager.findFragmentById(R.id.googleMap) as SupportMapFragment fragment.getMapAsync(this) } override fun onMapReady(map: GoogleMap?) { googleMap = map googleMap?.uiSettings?.isMyLocationButtonEnabled = true googleMap?.uiSettings?.isZoomControlsEnabled = true googleMap?.uiSettings?.isCompassEnabled = true googleMap?.let { setupCluster(googleMap!!) } googleMap?.setOnMapClickListener { if (isClient) { viewModel.setType(MapNewTwoViewModel.OrderType.MY) } else viewModel.setType(MapNewTwoViewModel.OrderType.ALL) } } setupCluster private fun setupCluster(map: GoogleMap) { clusterManager = ClusterManager(MyApplication.applicationContext(), map) renderer = DotRenderer() clusterManager?.renderer = renderer if(clusterManager != null){ Log.d("ClusterManager", "true") } else { Log.d("ClusterManager", "false") } map.setOnCameraIdleListener(clusterManager) map.setOnMarkerClickListener(clusterManager) map.setOnInfoWindowClickListener(clusterManager) clusterManager?.setOnClusterClickListener(this) clusterManager?.setOnClusterItemClickListener(this) } 在 setupViewModel 中我只是在看 MediatorLiveData viewModel.mediatorLiveData.observe(viewLifecycleOwner, { Log.d("MediatorLiveData", it.size.toString()) setItemsCluster(it) }) 集群所需的setItemsCluster private fun setItemsCluster(orders: List<OrderX>){ //---somesthing Operation/. if(clusterManager == null){ Log.d("ClusterManager", "null") } clusterManager?.addItems(itemClusters) clusterManager?.cluster() } 现在记录: 2020-10-21 18:53:23.658 30104-30104/com.app D/ClusterManager: null 2020-10-21 18:53:23.722 30104-30104/com.app D/ClusterManager: true 2020-10-21 18:53:23.734 30104-30104/com.app D/OnClustersChanged: [] 问题,为什么viewModel.observe() 比 onMapReady 工作得更快? 毕竟我调用的比setupMap晚(onMapReady,初始化Cluster的地方) 如何解决? 为此,我没有给ClusterManager加分 准备好后为地图设置绑定。像这样: override fun onMapReady(map: GoogleMap?) { ... setupMapBindings() } fun setupMapBindings() { viewModel.mediatorLiveData.observe(viewLifecycleOwner, { setItemsCluster(it) }) } getMapAsync 是异步的(顾名思义)并且地图准备好需要一些时间,当您最初观察 LiveData 时,它将返回其当前值,以便您始终拥有一个值

回答 2 投票 0

Android RoomDB 使用 Hilt 和 ViewModels 从另一个表中获取子列表

我有两个表 Sale 和 SaleProducts 具有一对多关系(一个 Sale 到多个 SaleProducts) 我想弄清楚从...获得销售和所有销售商品的最佳方式是什么

回答 0 投票 0

Android Hilt - 为什么我不能在没有应用程序抱怨我的 ViewModel 没有零参数构造函数的情况下将依赖项注入 MyViewModel

不确定我犯了什么错误,因为我尽可能地遵循了 Hilt View 模型文档。 我正在尝试使用 Hilt 在 Android 中实现最基本的依赖注入...

回答 0 投票 0

Dagger Hilt 错误:错误:[Dagger/MissingBinding] for firebase auth

所以我正在开发一个使用 firebase auth 和 dagger hilt 注入它的项目,一切正常,直到我添加了一些我不知道到底是什么导致问题的东西,因为我添加了 mutl ...

回答 0 投票 0

如何在出错时保持流程活跃/重新启动它?

在我的 Android ViewModel 中,我有这样的代码: 尝试 { 我的资料库 .getAllData() 。抓住 { Timber.e("捕获异常情况 1") 木材.e(it) ...

回答 1 投票 0

如何清除activity中的Viewmodel状态

我的 MVVM 应用程序有两个请求: fun fetchStrings(lang: String, callBack: (res: JsonObject?) -> Unit) { job = CoroutineScope(Dispatchers.IO).launch { val 数组 = JsonArray().

回答 0 投票 0

Compose - 在 Navigation Graph 内部和外部获取相同的 ViewModel 实例

我的 Compose 应用程序中的顶级可组合项的结构如下: ModalBottomSheetLayout(/*...*/) { 脚手架( 顶栏= { 当(当前屏幕){ /*...*/ ...

回答 1 投票 0

如何从 Observer android kotlin 保存值

我有一个 ROOM 数据库,我可以从中获取值。 我正在使用 Observer 来获取数据,但是有一个问题。我的 Fragment 中有一个全局变量 availability ,我想存储 v...

回答 1 投票 0

为什么显示此小吃栏会阻止任何其他点击输入?

我是 Android 开发的新手,遵循 YouTube 上的教程并发送此 UI 事件(显示小吃店)会阻止任何其他输入,直到它被关闭。 它不应该允许任何其他事件因为......

回答 0 投票 0

有没有办法在单元测试中忽略 ViewModel init{}?

我有一个带有初始化方法的 ViewModel。 类 ExampleViewModel : ViewModel() { 在里面 { println("################init######################") } } 就我而言,我必须签署...

回答 0 投票 0

hiltViewModel() 提供不同的 Viewmodel 实例

我正在处理我的 PET 项目,但遇到了问题:hiltViewModel() 在每次重组的组合导航图中提供了不同的 ViewModel 实例。 我的导航主机: 导航主机(...){ ... ...

回答 0 投票 0

当片段被销毁时,Android ViewModel 不会被销毁

我在使用以下代码创建的片段中有视图模型: areaViewModel = ViewModelProvider( 这个,AreaViewModelFactory(AreaController.repository,currentPanelId,areaId) )[

回答 2 投票 0

运行我的应用程序时出现运行时错误 IllegalArgumentException:没有为给定类设置初始值设定项

java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.mikaai/com.example.mikaai.assistant.Assistantactivity}: java.lang.IllegalArgumentException:没有为 gi 设置初始值设定项...

回答 1 投票 0

为什么在使用 ViewModel 实例时无法将数据存储在 Room 中?

我使用 hashmap 在我的 Fragment UserFragment 中创建了一个简单的数据,我希望每次单击存储按钮时将特定的键值存储在房间数据库中,然后单击侦听器...

回答 0 投票 0

Android,如何减少这种重复的代码? [关闭]

在我的 ViewModel 中,我实现了几个函数来操纵 UI 的状态。它很快变得越来越大,我想知道这些功能是否违反了DRY原则?我可以把我包起来……

回答 0 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.