jjzjj

viewModel

全部标签

android - 如何将 editText 值传递给 viewModel 和 Livedata (Kotlin)

我正在研究Android+Kotlin,做一个简单的例子来理解LiveData+ViewModel。非常简单:我有一个根Activity和两个fragment。FragmentOne有两个EditText。对这些值求和,我需要将结果传递给ViewModel。然后我在根Activity和FragmentTwo中使用观察来查看更改的数据。fragment一classFragmentOne:Fragment(){privatevalmodelbylazy{ViewModelProviders.of(activity).get(MyViewModel::class.java)}varresul

android - 应该如何为具有多个字段的 Activity 实现 ViewModel

问题有一个设置屏幕(SettingsActivity),其中包含大约10个文本字段和3个按钮。在onClick上打开对话框以插入/编辑文本的文本字段将其内容保存在SharedPreferences中。这些按钮执行异步请求以检索内容并保存在其他地方。在请求期间,会显示一个对话框以通知进度。初步解决方案数据存储库基本上是SharedPreferences的包装器,它有10个getter和10个setter,每个字段一个。在get[field_name]上,DataRepository从SharedPreferences获取值,在set[field_name]上,它提交给SharedPref

android - 最佳实践?在 Activity 之间传递参数

在Activity之间传递参数的最佳方式是使用putExtra()方法。可以通过putParcelable()传递对象。但并非所有对象都是可分割的。如果你想传递一个不可打包的对象,你怎么能这样做?我已经通过在目标Activity中创建一个静态对象变量并在调用Activity中填充该变量来解决这个问题。这是一个很好的可能性还是我不应该这样做。如果是,为什么?这会导致任何问题吗?例子:主要ActivityclassFirstActivityextendsAppCompatActivity{MyOwnNotParcelableObjectmObject;publicvoidopenNextA

ViewModel组件的使用和生命周期管理

ViewModel介绍ViewModel是Jetpack组件之一,用于帮助管理UI数据和处理设备配置变化。它允许在应用程序的不同组件之间共享和管理数据,并且可以帮助避免内存泄漏和减少对生命周期的依赖。ViewModel通常用于存储和管理与UI相关的数据,例如界面上的文本、列表数据等。它可以存活于Activity或Fragment的生命周期之外,并且在设备配置变化时保持数据的一致性。在使用ViewModel时,通常需要创建一个继承自ViewModel的子类,并在其中定义需要共享和管理的数据。然后在Activity或Fragment中通过ViewModelProvider来获取ViewModel的

android - 什么情况下 "Can' t 从 onDestroy 访问 ViewModels”以及如何优雅地解决它?

一些错误如java.lang.RuntimeException:Unabletodestroyactivity{xxxxxx}:java.lang.IllegalStateException:Can'taccessViewModelsfromonDestroy 最佳答案 查看Android源代码,它检查在尝试获取ViewModel时支持的FragmentManager是否被破坏。打电话ViewModelProviders.of(this).get(ViewModel::class.java)会到达privatestaticHolde

android - 直接实例化 ViewModel,不使用 ViewModelProviders.of 方法

我有一个名为RecipesViewModel的ViewModel。通常,我这样实例化它:RecipesViewModelviewModel=ViewModelProviders.of(this,newViewModelProvider.Factory(){@OverridepublicTcreate(ClassmodelClass){return(T)newRecipesViewModel(recipesRepository);}}).get(RecipesViewModel.class);但现在我使用的是dagger2,所以我在这个ViewModel的构造函数上添加了一个@Injec

architecture - 如何正确地确定 ViewModel 的范围?

我正在努力思考新的Android架构组件,特别是ViewModel。我的印象是Fragment不应该知道它属于哪个Activity或Fragment,以便它可以在应用程序的不同上下文中使用。这些示例似乎通过直接在Fragment中而不是Fragment所有者中声明ViewModel范围来与此相矛盾:viewModel=ViewModelProviders.of(getActivity()).get(SomeViewModel.class);我希望能够在Master/Detail配置中使用此Fragment,其中两者共享相同的状态(即ViewModel实例),以及在ViewPager内部

android - ViewModel 中的实例成员 LiveData 变量?

在使用Android几年后,我试图了解Android架构组件。阅读官方文档和一些博客后,让我感到困惑的一件事是在哪里创建LiveData变量。在下面的第一个变体中,我只在存储库类中创建了一个livedata变量,而在两个变体中的第二个变体中存储库和View模型类。两种变体都有效。第一个变体:publicclassScoreViewModelextendsAndroidViewModel{privateScoreRepositorDBscoreRepo;publicScoreViewModel(Applicationapplication){super(application);scor

android - ViewModel 观察者方法返回 null

我收到以下错误Attempttoinvokevirtualmethod'voidandroid.arch.lifecycle.LiveData.observeonanullobjectreference来self的主要fragment中的以下代码部分mReleasesViewModel=ViewModelProviders.of(this).get(ReleasesViewModel.class);mReleasesViewModel.getUpcomingReleases(filter).observe(this,newObserver>(){@Overridepublicvoido

android - 架构组件 ViewModels 使用来自 Activity/Fragment 的参数注入(inject) Dagger

我正在尝试添加新的架构组件ViewModel到我的应用程序,同时用Dagger注入(inject)它们。我的代码基于谷歌显示的here.我试图避免出现ViewModelFactory对于每个ViewModel类型,所以我使用了ViewModelFactory收到Map,Provider>creators.它适用于ViewModels与@Singleton有依赖关系范围。然而,我的一个ViewModels具有来自fragment的依赖性。这是该fragment的模块:@ModulepublicabstractclassDownloadIssueDialogFragmentModule{@