问题标签 [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.
android - 第二次观察viewmodel在android中返回null
在我的 android 应用程序中,我遵循 mvvm 模式的架构组件。我的应用程序进行网络调用以显示天气信息。api 调用是从存储库进行的,它返回对视图模型的响应的实时数据,而我的主要活动又会观察到它。
该应用程序工作正常,除了一种情况外,每当我断开互联网以测试失败案例时,它都会根据需要扩展错误视图
在错误视图中,我有一个重试按钮,它使方法调用以再次观察视图模型(此方法也由 oncreate() 第一次调用,有效)
即使在打开互联网后,点击监听 observable 的重试按钮,数据仍然为空。
我不知道为什么。请任何人帮忙
存储库
视图模型
在活动中观察方法
活动中的重试按钮
android - Android Live 数据观察者异常
我正在尝试实现新的 android 架构组件,并在片段和视图模型中使用了实时数据,但是当我向实时数据添加观察者时,应用程序崩溃并抛出此异常。
列表片段:
视图模型:
注意数据库:
如果在实时数据上添加正面,应用程序会崩溃。
我正在使用“Room.databaseBuilder(....)”函数在我的应用程序类中构建数据库的单个实例,并在任何地方使用它,我的 NoteEntity 类有三个字段,一个是 id,它是自动生成的主键。
android - Android 架构组件 ViewModel - 与 Service/IntentService 的通信
我正在探索 Google 的Android Architecture Components。在我的项目中,我依赖Services和IntentServices。从 IntentService 或 Service与应用的ViewModel通信的正确方法是什么?使用 LiveData 可以实现吗?
android - 生成的 FragmentBinding 不包含我的 CustomView id
我在我的 android 项目中使用数据绑定,并且我的 dashboard_fragment_layout.xml 包含 LinearLayout,其中包含 TextView 和 CustomView:
当我尝试通过生成的 FragmentDashboardBinding 访问我的自定义视图时:
我在 AndroidStudio 中收到“无法解析符号 viewCustom”。而且我对 TextView 没有这个问题,它可以从 mBinding 对象访问:
我总是在自定义视图中遇到此错误,访问自定义视图对象的唯一方法是使用 findViewById 以旧方式执行此操作:
全部一起:
如何通过生成的数据绑定对象访问自定义视图?
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?
android - 如何从android中的viewmodel调用baseactivity函数
嗨,我还有LoginActivity
一些LoginViewModel
课程。我有 showLoading
,hideLoading
所以BaseActivity
可以从每个活动中访问它。
我可以调用类似LoginActivity
的方法LoginViewModel
mNavigator?.startForgotPasswordActivity()
我想从那时起调用它,LoginViewModel
然后使用 MVVM 怎么做呢?或者我会采用错误的方法。请建议这样做的正确方法是什么?
基本活动.kt
登录活动.kt
登录视图模型.kt
BaseViewModel.kt
android - 如何在 mvvm 模式下登录成功时从视图模型开始活动
嗨,我有一项活动LoginActivity.kt
,并且LoginViewModel
。我在login
方法中调用登录API LoginViewModel
。成功后,我想开始家庭活动。在 MVVM 方法中正确的方法是什么?
登录视图模型.kt
登录活动.kt
android - ViewModels 的自定义半通用工厂
我正在尝试创建一个通用的 ViewModelProvider.Factory 来实例化我的 ViewModel
这些是我的捆绑包:
这些是我使用自定义 ViewModel 扩展的基本 ViewModel:
以及从其中之一扩展的 ViewModel 示例:
我的问题是
不会找到任何构造函数和这条线
出现在日志中
这是我在堆栈跟踪中得到的:
这是没有构造函数的 Kotlin 问题吗?我该如何解决?
android - Android MVVM:具有多个片段的活动 - 将共享 LiveData 放在哪里?
我有一个关于 android ViewModels 的架构问题:
假设在我的应用程序中,我有一个 Activity,里面有两个 Fragment(使用 Viewpager)。这两个片段做不同的事情(因此可能有自己的 ViewModel?),但它们也都需要各种相似的数据。
例如,如果网络连接可用或不可用(如果没有连接,则两个片段显示不同的错误 UI),或者通过来自服务器的推送并同等影响两个片段的某些用户设置。
这看起来像这样:
现在我的问题是在使用 ViewModels 时如何处理这种情况?一个视图观察多个 ViewModel 是否很好,就像我有一个用于 Activity 的 ViewModel(保持两者都需要的状态)和一个用于每个 Fragment 的 ViewModel,如下所示:
例如,这里暗示了这一点,但这不是一个好的做法,因为MVVM 中的关系通常是
视图 n - 1 视图模型 n - 1 模型
但我不确定在我的情况下,这种共享 LiveData 的正确位置在哪里?
android - 如何将视图模型绑定到底页
我试图弄清楚如何将视图模型绑定到底部表,以便我可以使用视图模型上的可观察字段来扩展、折叠和隐藏底部表。
谢谢!