编辑:这个问题有点过时了,因为Google已经让我们能够将ViewModel范围限定为导航图。更好的方法(而不是试图清除Activity范围的模型)是为适当数量的屏幕创建特定的导航图,并确定它们的范围。引用android.arch.lifecycle.ViewModel类。ViewModel的范围是与其相关的UI组件的生命周期,因此在基于Fragment的应用程序中,这将是fragment生命周期。这是一件好事。在某些情况下,希望在多个fragment之间共享一个ViewModel实例。具体来说,我对许多屏幕与相同的基础数据相关的情况感兴趣。(当多个相关fragment显示在同一个屏幕
我一直在苦苦思索在新版AndroidrecommendedArchitecture中放置Android服务的位置。.我想出了很多可能的解决方案,但我无法决定哪一种是最好的方法。我做了很多研究,但找不到任何有用的指南或教程。我发现的关于在我的应用程序架构中放置服务的位置的唯一提示是来自@JoseAlcerrecaMediumpost的提示。Ideally,ViewModelsshouldn’tknowanythingaboutAndroid.Thisimprovestestability,leaksafetyandmodularity.Ageneralruleofthumbistomak
我正在尝试在我的android应用程序中实现MVVM模式。我已经读过ViewModels不应该包含特定于android的代码(以使测试更容易),但是我需要为各种事情使用上下文(从xml获取资源、初始化首选项等)。做这个的最好方式是什么?我看到AndroidViewModel有一个对应用程序上下文的引用,但是它包含android特定的代码,所以我不确定它是否应该在ViewModel中。这些也与Activity生命周期事件相关,但我使用dagger来管理组件的范围,所以我不确定这会如何影响它。我是MVVM模式和Dagger的新手,因此不胜感激! 最佳答案
我正在尝试使用Android架构组件编写一个示例应用程序,但即使尝试了几天,我也无法让它工作。它给了我上述异常。生命周期所有者:-publicclassMainActivityextendsLifecycleActivity{publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextViewtextView=findViewById(R.id.tv_user);PostViewModelviewMod
在LastGoogleIO上,Google发布了一些新架构组件的预览,其中之一是ViewModel。在docsgoogle展示了该组件的一种可能用途:Itisverycommonthattwoormorefragmentsinanactivityneedtocommunicatewitheachother.Thisisnevertrivialasbothfragmentsneedtodefinesomeinterfacedescription,andtheowneractivitymustbindthetwotogether.Moreover,bothfragmentsmusthand
我有一个ViewModel类,就像Architectureguide的连接ViewModel和存储库部分中定义的类。.当我运行我的应用程序时,我得到一个运行时异常。有谁知道如何解决这个问题?我不应该注入(inject)ViewModel吗?有没有办法告诉ViewModelProvider使用Dagger来创建模型?publicclassDispatchActivityModelextendsViewModel{privatefinalAPIapi;@InjectpublicDispatchActivityModel(APIapi){this.api=api;}}Causedby:jav
我有一个单独的类,我在其中处理数据获取(特别是Firebase),我通常从中返回LiveData对象并异步更新它们。现在我想将返回的数据存储在ViewModel中,但问题是为了获得所述值,我需要观察从我的数据获取类返回的LiveData对象。观察方法需要一个LifecycleOwner对象作为第一个参数,但我的ViewModel中显然没有该对象,而且我知道我不应该在ViewModel中保留对Activity/Fragment的引用。我该怎么办? 最佳答案 在thisblogpostGoogle开发人员JoseAlcérreca建议在
我正在使用在GoogleI/O2018上展示的android导航,我似乎可以通过绑定(bind)到某个View或使用NavHost从Fragment获取它来使用它。但我需要的是根据几个条件从我的第一个fragment从ViewModel导航到另一个特定View。对于ViewModel,我扩展了AndroidViewModel,但我不明白下一步该怎么做。我无法将getApplication转换为Fragment/Activity,也无法使用NavHostFragment。此外,我不能只将导航绑定(bind)到onClickListener,因为startFragment只包含一个Imag
我正在使用带有Dagger2的新架构组件,我想使用工厂类注入(inject)我的ViewModel。Factory类本身是可注入(inject)的。当Factory类在Java中定义时,这一切都很好,但是当我将它转换为Kotlin时,Dagger2不知道如何为构造函数生成Map,而在Java中它知道如何生成。我认为不同之处在于,转换后,Factory类使用kotlin包中的Map,而不是java.util.Map包中的Map。如何让Dagger2为Factory构造函数生成map?这是工厂类@ActivityScopeclassMainActivityViewModelFactory@
我正在尝试使用适用于android的新导航架构组件,但出现错误无法解决:androidx.lifecycle:lifecycle-viewmodel-ktx:1.1.1当我将生命周期版本定义为“1.1.1”时我基本上只是在复制和粘贴文档中的内容,所以我对这里的问题已经没有想法了:(applyplugin:'com.android.application'applyplugin:'kotlin-android'applyplugin:'kotlin-android-extensions'applyplugin:'kotlin-kapt'android{compileSdkVersion2