问题标签 [android-viewmodel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6084 浏览

android - 第二次观察viewmodel在android中返回null

在我的 android 应用程序中,我遵循 mvvm 模式的架构组件。我的应用程序进行网络调用以显示天气信息。api 调用是从存储库进行的,它返回对视图模型的响应的实时数据,而我的主要活动又会观察到它。

该应用程序工作正常,除了一种情况外,每当我断开互联网以测试失败案例时,它都会根据需要扩展错误视图

在错误视图中,我有一个重试按钮,它使方法调用以再次观察视图模型(此方法也由 oncreate() 第一次调用,有效)

即使在打开互联网后,点击监听 observable 的重试按钮,数据仍然为空。

我不知道为什么。请任何人帮忙

存储库

视图模型

在活动中观察方法

活动中的重试按钮

0 投票
2 回答
1354 浏览

android - Android Live 数据观察者异常

我正在尝试实现新的 android 架构组件,并在片段和视图模型中使用了实时数据,但是当我向实时数据添加观察者时,应用程序崩溃并抛出此异常。

列表片段:

视图模型:

注意数据库:

如果在实时数据上添加正面,应用程序会崩溃。

我正在使用“Room.databaseBuilder(....)”函数在我的应用程序类中构建数据库的单个实例,并在任何地方使用它,我的 NoteEntity 类有三个字段,一个是 id,它是自动生成的主键。

0 投票
1 回答
5100 浏览

android - Android 架构组件 ViewModel - 与 Service/IntentService 的通信

我正在探索 Google 的Android Architecture Components。在我的项目中,我依赖ServicesIntentServices。从 IntentService 或 Service与应用的ViewModel通信的正确方法是什么?使用 LiveData 可以实现吗?

0 投票
2 回答
66 浏览

android - 生成的 FragmentBinding 不包含我的 CustomView id

我在我的 android 项目中使用数据绑定,并且我的 dashboard_fragment_layout.xml 包含 LinearLayout,其中包含 TextView 和 CustomView:

当我尝试通过生成的 FragmentDashboardBinding 访问我的自定义视图时:

我在 AndroidStudio 中收到“无法解析符号 viewCustom”。而且我对 TextView 没有这个问题,它可以从 mBinding 对象访问:

我总是在自定义视图中遇到此错误,访问自定义视图对象的唯一方法是使用 findViewById 以旧方式执行此操作:

全部一起:

如何通过生成的数据绑定对象访问自定义视图?

0 投票
2 回答
3522 浏览

android - 如何观察 PagedList 数据?

我正在使用分页库和 Android 架构组件。我只是想观察 pagedlist livedata 并在发生更改时更新我的​​ RecyclerView。

我正在观察 isLoadingLiveData、isEmptyLiveData 和 errorLiveData 对象,它们是在我的 ViewModel 中创建并在我的片段中观察到的 MediatorLiveData 对象。并且还观察从远程返回获取的 Gist 列表的 resultLiveData。

在我的 ViewModel 中,我创建了一个 PagedList LiveData,每当它的数据发生变化时,我都想更新 isLoadingLiveData、isEmptyLiveData、errorLiveData 和PagedListAdapter。因此,我将 isLoadingLiveData、isEmptyLiveData、errorLiveData 和 resultLiveData 定义为 MediatorLiveData 对象。我添加了 resultLiveData 作为这些对象的来源。所以当 resultLiveData 发生变化时,这些对象的 onChanged 方法就会被调用。并且 resultLiveData 依赖于 userNameLiveData,所以当 userNameLiveData 发生变化时,会调用 allGistsLiveData 并获取数据。例如,当用户滑动列表时,我正在设置 userNameLiveData 并再次进行网络调用。

我的视图模型:

和我的片段:

我的存储库:

我的远程数据源:

我试图从这个项目中创建这个解决方案。但是我的问题是 resultLiveData 一直在更改而没有等待网络调用响应,因此响应的结果被忽略了,我的 ui 在数据到达之前就被更新了。由于 resultLiveData 在请求之前正在更改,因此还没有数据。简单地说,我怎样才能观察 pagedlist livedata?

0 投票
1 回答
3152 浏览

android - 如何从android中的viewmodel调用baseactivity函数

嗨,我还有LoginActivity一些LoginViewModel课程。我有 showLoadinghideLoading所以BaseActivity可以从每个活动中访问它。

我可以调用类似LoginActivity的方法LoginViewModelmNavigator?.startForgotPasswordActivity()

我想从那时起调用它,LoginViewModel然后使用 MVVM 怎么做呢?或者我会采用错误的方法。请建议这样做的正确方法是什么?

基本活动.kt

登录活动.kt

登录视图模型.kt

BaseViewModel.kt

0 投票
1 回答
6889 浏览

android - 如何在 mvvm 模式下登录成功时从视图模型开始活动

嗨,我有一项活动LoginActivity.kt,并且LoginViewModel。我在login方法中调用登录API LoginViewModel。成功后,我想开始家庭活动。在 MVVM 方法中正确的方法是什么?

登录视图模型.kt

登录活动.kt

0 投票
1 回答
396 浏览

android - ViewModels 的自定义半通用工厂

我正在尝试创建一个通用的 ViewModelProvider.Factory 来实例化我的 ViewModel

这些是我的捆绑包:

这些是我使用自定义 ViewModel 扩展的基本 ViewModel:

以及从其中之一扩展的 ViewModel 示例:

我的问题是

不会找到任何构造函数和这条线

出现在日志中

这是我在堆栈跟踪中得到的:

这是没有构造函数的 Kotlin 问题吗?我该如何解决?

0 投票
2 回答
11095 浏览

android - Android MVVM:具有多个片段的活动 - 将共享 LiveData 放在哪里?

我有一个关于 android ViewModels 的架构问题:

假设在我的应用程序中,我有一个 Activity,里面有两个 Fragment(使用 Viewpager)。这两个片段做不同的事情(因此可能有自己的 ViewModel?),但它们也都需要各种相似的数据。

例如,如果网络连接可用或不可用(如果没有连接,则两个片段显示不同的错误 UI),或者通过来自服务器的推送并同等影响两个片段的某些用户设置。

这看起来像这样:

在此处输入图像描述

现在我的问题是在使用 ViewModels 时如何处理这种情况?一个视图观察多个 ViewModel 是否很好,就像我有一个用于 Activity 的 ViewModel(保持两者都需要的状态)和一个用于每个 Fragment 的 ViewModel,如下所示:

在此处输入图像描述

例如,这里暗示了这一点,但这不是一个好的做法,因为MVVM 中的关系通常是

视图 n - 1 视图模型 n - 1 模型

但我不确定在我的情况下,这种共享 LiveData 的正确位置在哪里?

0 投票
1 回答
4362 浏览

android - 如何将视图模型绑定到底页

我试图弄清楚如何将视图模型绑定到底部表,以便我可以使用视图模型上的可观察字段来扩展、折叠和隐藏底部表。

谢谢!