jjzjj

viewModel

全部标签

android - 如何在不使用数据绑定(bind)的情况下让 EditText 观察 ViewModel 的 LiveData 并将用户输入转发到 ViewModel

我正在尝试想出一种方法让EditText更新ViewModel的数据并同时观察该数据的任何更改(例如,通过操作数据库带来的更改)。有没有办法在不使用数据绑定(bind)库的情况下做到这一点?我在简单地使用MutableLiveData时面临的主要问题如下:当用户在EditText中输入文本时,TextWatcher会触发ViewModel以更新其数据,这反过来会将新文本设置到MutableLiveData对象。因为EditText正在观察LiveData,所以会触发onChange并相应地设置EditText的文本,这又会再次触发TextWatcher,从而形成无限循环。

当其主机 Activity 不在 Activity 堆栈的顶部并且设备旋转时,Android ViewModel 重新创建

我处于以下场景:我有一个包含ViewModel的OnboardActivity,我可以多次旋转这个OnboardActivity和ViewModel跨配置更改持续存在而不会出现问题。但是,如果我使用startActivityForResult(...)在这个(OnboardActivity)之上启动另一个Activity(FirebaseAuthActivity),然后在FirebaseAuthActivity中旋转设备并按下后退按钮。当OnboardActivity被带到堆栈的顶部时,它会再次重新创建ViewModel实例。这是ViewModel在架构组件中的正常行为吗?当Onboa

android - RELEASE配置下MvvmCross MvxException "Failed to construct and initialize ViewModel"

我正在使用MvvmCross开发Xamarin.Android应用程序。每次我在RELEASE配置下启动应用程序时,它都会在启动时崩溃并出现以下错误:Cirrious.CrossCore.Exceptions.MvxException:FailedtoconstructandinitializeViewModelfortypeDroidApp.Core.ViewModels.MainViewModelfromlocatorMvxDefaultViewModelLocator-checkMvxTraceformoreinformation此应用程序在DEBUG配置下运行良好。在我更新代码

在屏幕旋转时重新创建 Android ViewModel

我发现了一个架构组件ViewModel没有被保留的情况——简而言之,它是这样的:Activity启动并创建ViewModel实例Activity置于后台设备屏幕旋转Activity回到前台调用ViewModel的onCleared方法并创建新对象在这种情况下,我的ViewModel实例被破坏是Android的正常行为吗?如果是这样,是否有任何推荐的保持其状态的解决方案?我能想到的一种方法是在调用onCleared后保存它,但是,它也会在Activity实际完成时保持状态。另一种方法是使用onRestoreInstanceState但它会在每次屏幕旋转时触发(不仅是在应用程序处于后台时)

android - Fragments 中的 getLoaderManager 已弃用

更新后我发现getLoaderManager已被弃用,但我找不到我应该使用它来代替。如何获取LoaderManager?或者我应该使用什么来代替Loader? 最佳答案 从AndroidP(API28)开始,加载程序已被弃用。在处理Activity和Fragment生命周期时处理加载数据的推荐选项是使用ViewModel和LiveData的组合。ViewModel可以像加载器一样在配置更改后幸存下来,但样板文件更少。LiveData提供了一种生命周期感知方式来加载数据,您可以在多个ViewModel中重复使用这些数据。

java - 在 Viewmodel 中访问 BroadCastReceiver

我正在努力选择将数据从broadcastReceiver传递到ViewModel的正确方法,然后从那里将数据传递到我的存储库并更新LiveData。我使用FCM推送通知并拥有使用ActivityLifecycle的本地broadCastReceiver。我发现从BroadcastReceiver访问ViewModel是不好的做法,但不确定为什么?如果我管理broadcastReceiver的生命周期,它应该不会引起任何问题...那么将接收到的数据从FCM传递到我的存储库的MediatorLiveData的最佳方法是什么?我使用MediatorLiveData,因为我添加了不同的实时数据

android - 无法创建 ViewModel 类的实例(无法启动 Activity ComponentInfo)

我在我的项目中使用MVVM、Retrofit、LiveData,但在我看到这些链接之前出现此错误CannotcreateaninstanceofcustomViewModelCannotcreateaninstanceofclassViewModel错误java.lang.RuntimeException:UnabletostartactivityComponentInfo{ir.orangehat.movieinfo/ir.orangehat.movieinfo.application.home.HomeActivity}:java.lang.RuntimeException:Can

没有数据绑定(bind)的android MVVM

问题:我可以在不使用数据绑定(bind)的情况下使用MVVM实现android应用吗?我要解决的问题非常简单:从后端API读取项目列表并在Recylerview中显示它们。我是如何实现的:在View中-我有Activity和RecyclerViewAdapter模型:ApiResponse和数据模型网络-改造API服务,RxJava2对于ViewModel部分-我有一个ViewModel类(不派生自任何东西)基本上调用RetrofitService并使用RxJava调用获取数据。ViewModel有如下调用:voidgetItems();voidaddItemData();voidre

android - fragment 中的 ViewModel 清除屏幕旋转时的值

我想我在这里遗漏了一些明显的东西,但是......我将数据存储在DiaryViewModel类的uiModel中,并且由于我使用架构组件,所以我希望通过屏幕旋转保留数据-但事实并非如此。我不知道为什么。这是一个精简的fragmentclassDiaryFragment:Fragment(){privatelateinitvarviewModel:DiaryViewModeloverrideonCreateView(...){viewModel=ViewModelProviders.of(this).get(DiaryViewModel::class.java)viewModel.get

安卓数据绑定(bind) : set default visibility in xml

我在recyclerview中显示项目并使用数据绑定(bind)。在xml布局中,我有这样的View:它运行良好,但我有一个问题:虽然初始值viewmodel.expandable为false,但在recyclerview初始化并将项目绑定(bind)到View时,此布局在屏幕上闪烁一次。因此,我决定暂时隐藏此布局并尝试在xml中使用default参数,如下所示:但是出了点问题:error:'View'isincompatiblewithattributeandroid:visibility(attr)enum[gone=2,invisible=1,visible=0].所以,或者我错