我正在学习Android编程的新架构组件,但我很难理解Activity的职责是什么。我知道他们只应该处理UI,这是有道理的,但到什么程度呢?假设我有一个Activity,最初有一个EditText,用户可以在其中输入字符串。在此下方有一个按钮,用于添加另一个EditText供用户输入另一个String。这些数据应该如何在幕后处理?我提出的两个解决方案如下:1)处理ViewModel中的数据。用户点击按钮->Activity告诉ViewModel->ViewModel维护EditTexts列表->当用户完成后,Activity告诉ViewModel->ViewModel处理数据我看到这种
我正在构建一个定位应用程序,我在其中显示来self的MainActivity中的Room数据库的背景位置。我可以通过调用获取ViewModellocationViewModel=ViewModelProviders.of(this).get(LocationViewModel.class);locationViewModel.getLocations().observe(this,this);当我通过BroadCastReceiver接收位置更新时,周期性的背景位置应该保存到Room数据库中。它们应该通过调用locationViewModel.getLocations().setVal
查看ViewModel文档,它说:Inotherwords,thismeansthataViewModelwillnotbedestroyedifitsownerisdestroyedforaconfigurationchange(e.g.rotation).Thenewinstanceoftheownerwilljustre-connectedtotheexistingViewModel.如果引用它的Activity被销毁,ViewModel如何不被销毁?一旦我们创建了一个新的Activity,它是如何重新连接的? 最佳答案 幕后
我尝试理解ViewModel。我创建ViewModel:publicclassUsersViewModelextendsViewModel{privatefinalUsersRepositoryusersRepository;publicUsersViewModel(UsersRepositoryusersRepository){this.usersRepository=usersRepository;}publicLiveData>loadAll(){returnusersRepository.getAll();}}但我不明白两件事:如何将UsersRepository注入(inje
我在Recyclerview中有一个列表对象。当长按一个项目时,我想显示一个对话框,其中包含单击项目的数据。Recyclerview为每个项目使用数据绑定(bind),我可以在长按时使用Log显示所选项目的数据。但是,当尝试显示对话框时,您需要访问Activity,不建议在ViewModel对象中使用它。那么如何显示对话框呢?谢谢,欧维 最佳答案 从概念上讲,我认为ViewModel是启动对话框的错误位置。为了更干净地做到这一点,我会将RecyclerView.ViewHolder传递到布局中,并在ViewHolder上有一个方法来
我在使用ViewModel和LiveData架构组件时遇到问题。当使用fragments并旋转屏幕时,观察者会被触发...我试图移动viewModel=ViewModelProviders.of(this).get(MainViewModel::class.java)在所有fragment生命周期方法中,但没有成功。我的场景相对简单:带有电子邮件和密码的登录屏幕用户点击“登录”按钮viewmodel调用login(email,password)并设置LiveData对象的值暂时简单地toast此时一切正常。但是当我旋转屏幕时,Toast会再次出现而无需任何用户交互。我必须在onDest
我目前正在为我的android应用程序项目使用databinding。我想在我的CustomTextView上设置来自R.string.txtOldPassWordError的error消息,并从另一个名为ViewModelClass.这是我的XML代码这是ViewModelClass.javapublicclassChangePasswordViewModelextendsBaseObservable{publicObservableFielduserOldPassword=newObservableField("");publicvoiduserPasswordChange(){i
在Lifecycle和LiveData之前,Viewmodel可以很容易地观察到它自己的可观察对象的变化。只需订阅Observable*的更改并对它们使用react即可。然后可能会使用双向绑定(bind)来立即对用户的输入使用react。在AndroidStudioCanary中,现在允许绑定(bind)到LiveData对象,前提是Binding知道其所有者的生命周期(ViewBinding现在有额外的setLifecycle方法),AndroidStudioCanaryinformation:YoucannowuseaLiveDataobjectasanobservablefiel
在过去的几周里,我一直致力于使用MVVMCross框架开发跨平台应用程序(IOS/Android/WP7)。今天我遇到了一个我真的不知道如何解决的问题,所以希望你能把我推向正确的方向。在IOS中,我有以下用于导航到另一个页面的结构(下面的代码位于ViewModel中):KeyValuePairkvpAct1=newKeyValuePair("short",".countertest5");publicIMvxCommandBeckhoffActuator1{get{returnnewMvxRelayCommand((type)=>this.RequestNavigate(kvpAct1
我有一项服务可以提供大多数时间对用户可见的UI。当我遇到问题时,我正在尝试新的应用程序架构。MyModelviewModelviewModel=ViewModelProviders.of(this).get(MyModelviewModel.class);但如您所知,this只能是AppCompat或Fragment还有其他选择吗?或者我可以将观察者直接放在我的LiveData上,就像我放在ViewModel上一样viewModel.getList().observe(Playground.this,newObserver>(){@OverridepublicvoidonChanged