关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我正在开发Android应用程序并尝试遵循MVVM设计模式。我有一个listView,问题是Adapter是否应该是ViewModel类的一部分?使用MVVM设计模式构建此结构的最佳方式是什么?
我正在关注this了解LiveData和ViewModel的文档。在文档中,ViewModel类具有这样的构造函数,publicclassUserModelextendsViewModel{privateMutableLiveDatauser;@InjectUserModel(MutableLiveDatauser){this.user=user;}publicvoidinit(){if(this.user!=null){return;}this.user=newMutableLiveData();}publicMutableLiveDatagetUser(){returnuser;}
我使用MVVM编写了一个Android应用程序,我在其中从ViewModel调用webservice并将结果存储在RoomDB中。在View中,我正在观察ViewModel的实时数据。我需要在使用Retrofit从Web服务获取数据时显示ProgressDialog。我需要在哪里编写代码来显示progressdialog因为我不应该在除View组件之外的其他架构组件中使用userinterface小部件?谁能帮我处理这种情况?提前致谢。 最佳答案 是的,您可以通过从Activity调用对话框并在View模型观察器中隐藏对话框来实现。
我在MainFragment中创建View模型:@OverridepublicvoidonActivityCreated(@NullableBundlesavedInstanceState){super.onActivityCreated(savedInstanceState);...MainViewModelmainViewModel=ViewModelProviders.of(this).get(MainViewModel.class);...}当用户选择项目然后导航到详细信息fragment时,此事务将添加到后台堆栈。getFragmentManager().beginTrans
我正在尝试想出一种方法让EditText更新ViewModel的数据并同时观察该数据的任何更改(例如,通过操作数据库带来的更改)。有没有办法在不使用数据绑定(bind)库的情况下做到这一点?我在简单地使用MutableLiveData时面临的主要问题如下:当用户在EditText中输入文本时,TextWatcher会触发ViewModel以更新其数据,这反过来会将新文本设置到MutableLiveData对象。因为EditText正在观察LiveData,所以会触发onChange并相应地设置EditText的文本,这又会再次触发TextWatcher,从而形成无限循环。
我处于以下场景:我有一个包含ViewModel的OnboardActivity,我可以多次旋转这个OnboardActivity和ViewModel跨配置更改持续存在而不会出现问题。但是,如果我使用startActivityForResult(...)在这个(OnboardActivity)之上启动另一个Activity(FirebaseAuthActivity),然后在FirebaseAuthActivity中旋转设备并按下后退按钮。当OnboardActivity被带到堆栈的顶部时,它会再次重新创建ViewModel实例。这是ViewModel在架构组件中的正常行为吗?当Onboa
我正在使用MvvmCross开发Xamarin.Android应用程序。每次我在RELEASE配置下启动应用程序时,它都会在启动时崩溃并出现以下错误:Cirrious.CrossCore.Exceptions.MvxException:FailedtoconstructandinitializeViewModelfortypeDroidApp.Core.ViewModels.MainViewModelfromlocatorMvxDefaultViewModelLocator-checkMvxTraceformoreinformation此应用程序在DEBUG配置下运行良好。在我更新代码
我发现了一个架构组件ViewModel没有被保留的情况——简而言之,它是这样的:Activity启动并创建ViewModel实例Activity置于后台设备屏幕旋转Activity回到前台调用ViewModel的onCleared方法并创建新对象在这种情况下,我的ViewModel实例被破坏是Android的正常行为吗?如果是这样,是否有任何推荐的保持其状态的解决方案?我能想到的一种方法是在调用onCleared后保存它,但是,它也会在Activity实际完成时保持状态。另一种方法是使用onRestoreInstanceState但它会在每次屏幕旋转时触发(不仅是在应用程序处于后台时)
更新后我发现getLoaderManager已被弃用,但我找不到我应该使用它来代替。如何获取LoaderManager?或者我应该使用什么来代替Loader? 最佳答案 从AndroidP(API28)开始,加载程序已被弃用。在处理Activity和Fragment生命周期时处理加载数据的推荐选项是使用ViewModel和LiveData的组合。ViewModel可以像加载器一样在配置更改后幸存下来,但样板文件更少。LiveData提供了一种生命周期感知方式来加载数据,您可以在多个ViewModel中重复使用这些数据。
我正在努力选择将数据从broadcastReceiver传递到ViewModel的正确方法,然后从那里将数据传递到我的存储库并更新LiveData。我使用FCM推送通知并拥有使用ActivityLifecycle的本地broadCastReceiver。我发现从BroadcastReceiver访问ViewModel是不好的做法,但不确定为什么?如果我管理broadcastReceiver的生命周期,它应该不会引起任何问题...那么将接收到的数据从FCM传递到我的存储库的MediatorLiveData的最佳方法是什么?我使用MediatorLiveData,因为我添加了不同的实时数据