我正在努力思考新的Android架构组件,特别是ViewModel。我的印象是Fragment不应该知道它属于哪个Activity或Fragment,以便它可以在应用程序的不同上下文中使用。这些示例似乎通过直接在Fragment中而不是Fragment所有者中声明ViewModel范围来与此相矛盾:viewModel=ViewModelProviders.of(getActivity()).get(SomeViewModel.class);我希望能够在Master/Detail配置中使用此Fragment,其中两者共享相同的状态(即ViewModel实例),以及在ViewPager内部
在使用Android几年后,我试图了解Android架构组件。阅读官方文档和一些博客后,让我感到困惑的一件事是在哪里创建LiveData变量。在下面的第一个变体中,我只在存储库类中创建了一个livedata变量,而在两个变体中的第二个变体中存储库和View模型类。两种变体都有效。第一个变体:publicclassScoreViewModelextendsAndroidViewModel{privateScoreRepositorDBscoreRepo;publicScoreViewModel(Applicationapplication){super(application);scor
我收到以下错误Attempttoinvokevirtualmethod'voidandroid.arch.lifecycle.LiveData.observeonanullobjectreference来self的主要fragment中的以下代码部分mReleasesViewModel=ViewModelProviders.of(this).get(ReleasesViewModel.class);mReleasesViewModel.getUpcomingReleases(filter).observe(this,newObserver>(){@Overridepublicvoido
我正在尝试添加新的架构组件ViewModel到我的应用程序,同时用Dagger注入(inject)它们。我的代码基于谷歌显示的here.我试图避免出现ViewModelFactory对于每个ViewModel类型,所以我使用了ViewModelFactory收到Map,Provider>creators.它适用于ViewModels与@Singleton有依赖关系范围。然而,我的一个ViewModels具有来自fragment的依赖性。这是该fragment的模块:@ModulepublicabstractclassDownloadIssueDialogFragmentModule{@
我在ViewModel中使用实时数据。我有一个场景,其中有两个fragment和一个Activity。fragmentA和fragmentB。在Activity中,我启动了FragmentA(它显示名称列表,即从后端获取),当我点击Name时,它显示FragmentB(这是返回堆栈)。现在,如果我在fragmentB中按下后退按钮,它会返回到fragmentA,它会显示一个空白屏幕,因为我已经在fragmentA的onCreate方法中实现了ViewModel。但是如果我在fragmentA的oncreateView方法中实现了ViewModel,它将继续添加观察者,因为fragm
目前需要LifecycleOwner才能创建观察者。我有在ViewModel中创建观察者的代码,因此在我的Fragment中检索ViewModel时我附加了LifecycleOwner。根据Google的文档。警告:ViewModel绝不能引用View、生命周期或任何可能包含对Activity上下文的引用的类。我是否违反了该警告?如果违反了,您建议我以何种方式移动我创建的数据返回观察者?我只做了一个观察者,所以我想知道它是否仍然有效。因为在谷歌的文档中它也说了。ViewModel对象可以包含LifecycleObservers,例如LiveData对象。主fragmentprivate
使用Retrofit我能够获取用户列表,但如果出现错误,我应该如何设法向UI发送通知。我在MVVM模式和Retrofit中使用Android架构组件“ViewModel”、“LiveData”作为网络库。 最佳答案 当网络请求成功完成时,您正在设置livedata的值。同样,在发生错误时将livedata的值设置为null,并在更新UI之前在Activity中检查null。进一步:如果你想向用户显示不同类型的错误。创建一个包含基本模型的基础模型类error_code、error_status等字段。
如今,LiveData非常流行,我如何使用ViewModel和LiveData将数据从Activity发送到fragment,反之亦然?请用编码示例进行解释。 最佳答案 Activity中publicclassMyActivityextendsAppCompatActivity{MyViewModelmyViewModel;Handlerhandler;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState)
前言前面的文章里面我们有介绍在Wpf中如何在View层将事件映射到ViewModel层的文章,传送门,既然WPF和Avalonia是两套不同的前端框架,那么WPF里面实现模式肯定在这边就用不了,本篇我们将分享一下如何在Avalonia前端框架下面将事件映射到ViewModel层。本章内容还是在上一节的基础上做扩展讲解。Avalonia中使用Prism实现区域导航功能安装行为扩展在Avalonia框架下面有它自己的行为扩展,我们需要借助这些扩展库里面的行为扩展来实现我们今天要讲解的功能。dotnetaddpackageAvalonia.Xaml.Behaviors--version11.0.5编
我需要为联系人请求权限,当应用程序启动时,我会询问,在ViewModel部分,我需要调用需要权限的方法。我需要检查用户是否授予权限然后调用,但是为了检查权限我需要访问Activity。而在我的ViewModel中,我没有对Activity的引用,也不想遇到这个问题,我该如何克服? 最佳答案 我刚遇到这个问题,我决定改用LiveData。核心概念:ViewModel有一个关于需要做出什么权限请求的LiveDataViewModel有一个方法(本质上是回调),如果权限被授予则返回SomeViewModel.kt:classSomeVie