草庐IT

Jetpack学习之ViewModel、Lifecycles、LiveData

全部标签

android - RELEASE配置下MvvmCross MvxException "Failed to construct and initialize ViewModel"

我正在使用MvvmCross开发Xamarin.Android应用程序。每次我在RELEASE配置下启动应用程序时,它都会在启动时崩溃并出现以下错误:Cirrious.CrossCore.Exceptions.MvxException:FailedtoconstructandinitializeViewModelfortypeDroidApp.Core.ViewModels.MainViewModelfromlocatorMvxDefaultViewModelLocator-checkMvxTraceformoreinformation此应用程序在DEBUG配置下运行良好。在我更新代码

微信小程序学习之数据绑定,事件绑定,事件传参与数据同步的学习记录

数据绑定,事件绑定,事件传参与数据同步1.数据绑定1.1.在data中定义数据1.2.在wxml中渲染数据(mustache语法)2.事件绑定2.1.事件2.2.常用的事件2.3.事件对象的属性列表2.4.target和currentTarget的区别3.事件传参与数据绑定3.1.在事件处理函数中给data中的数据赋值3.2.事件传参(通过自定义属性的方式)3.3.获取事件传递的参数值3.4.文本框与data之间的数据同步3.4.1.input输入框事件及获取即时的输入框数据3.4.2.文本框与data数据同步的小demo1.数据绑定数据绑定的基本原则:在data中定义数据,在wxml中使用数

在屏幕旋转时重新创建 Android ViewModel

我发现了一个架构组件ViewModel没有被保留的情况——简而言之,它是这样的:Activity启动并创建ViewModel实例Activity置于后台设备屏幕旋转Activity回到前台调用ViewModel的onCleared方法并创建新对象在这种情况下,我的ViewModel实例被破坏是Android的正常行为吗?如果是这样,是否有任何推荐的保持其状态的解决方案?我能想到的一种方法是在调用onCleared后保存它,但是,它也会在Activity实际完成时保持状态。另一种方法是使用onRestoreInstanceState但它会在每次屏幕旋转时触发(不仅是在应用程序处于后台时)

具有多个堆栈的 Android JetPack 导航

我正在使用带有底部导航的JetpackNavigationversion1.0.0-alpha04。它有效,但导航不正确。例如,如果我有选项卡A和选项卡B,然后从选项卡A转到页面C,然后从那里转到选项卡B,然后再次返回选项卡A,我将在选项卡A中看到根fragment,而不是页面C不是我所期望的。我正在寻找一种解决方案,让每个选项卡都有不同的堆栈,所以当我回到它时,每个选项卡的状态都会被保留,而且我不喜欢将所有这些fragment保留在内存中,因为它有一个坏对性能的影响,在jetpack导航之前,我使用了这个库https://github.com/ncapdevi/FragNav,那正是

Android - 带有 LiveData 组件的 MVVM 和 Repository 中的 Retrofit 调用

我想将以下组件用于身份验证View(登录):MVVM实时数据改造存储库我不知道如何接收Repository类中对当前ViewModel的异步Retrofit调用。View->ViewModel->RepositorywithLiveData。有人会有想法或例子来实现这个吗? 最佳答案 你可以像下面这样:YourActivity.ktclassYourActivity:AppCompatActivity(){privatevalmyViewModelbylazy{return@lazyViewModelProviders.of(thi

Android---Jetpack之Navigation

目录Navigation的诞生为此,Jetpack提供了Navigation组件,旨在方便我们管理页面和AppBar。  Navigation的优势Navigation的主要元素Navigation应用添加页面切换动画效果 普通方式与safeargs 插件方式参数传递深层链接DeepLink完整DemoNavigation的诞生Activity嵌套多个Fragment的UI架构模式已经非常普遍,但是对Fragment的管理一直是一件比较麻烦的事情。我们需要通过FragmentManager和FragmentTransaction来管理Fragment之间的切换。页面的切换通常还包括对应用程序A

java - 在 Viewmodel 中访问 BroadCastReceiver

我正在努力选择将数据从broadcastReceiver传递到ViewModel的正确方法,然后从那里将数据传递到我的存储库并更新LiveData。我使用FCM推送通知并拥有使用ActivityLifecycle的本地broadCastReceiver。我发现从BroadcastReceiver访问ViewModel是不好的做法,但不确定为什么?如果我管理broadcastReceiver的生命周期,它应该不会引起任何问题...那么将接收到的数据从FCM传递到我的存储库的MediatorLiveData的最佳方法是什么?我使用MediatorLiveData,因为我添加了不同的实时数据

android - 使用 LiveData 设置 TextView 的可见性

我想使用LiveData切换TextView的可见性。还有一些关于使用数据绑定(bind)设置可见性的其他帖子,但这些帖子使用Observables,而我想利用(更新的)LiveData。特别是使用LiveData。使用thisdocumentation和一些SO帖子,我已经了解到您应该正确对齐您的observable(LiveData)的getter,以便返回类型与您要设置的View属性的setter预期的类型相匹配。具体来说:View的setVisibility()需要一个int,而我有一个LiveData成员(因此我的ViewModel中的getter也将返回此类型)可以使用三元

android - 无法创建 ViewModel 类的实例(无法启动 Activity ComponentInfo)

我在我的项目中使用MVVM、Retrofit、LiveData,但在我看到这些链接之前出现此错误CannotcreateaninstanceofcustomViewModelCannotcreateaninstanceofclassViewModel错误java.lang.RuntimeException:UnabletostartactivityComponentInfo{ir.orangehat.movieinfo/ir.orangehat.movieinfo.application.home.HomeActivity}:java.lang.RuntimeException:Can

android - LiveData 如何知道房间数据库中的数据何时更改?

我正在学习android中的Mvvm模式,但我不明白一件事。实时数据如何知道房间数据库中的数据何时发生变化?我有这段代码:fragment:newUserViewModel.getListItemById(itemId).observe(this,newObserver(){@OverridepublicvoidonChanged(@NullableUseruser){tv.setText(user.getName());}});查看模型:publicLiveDatagetListItemById(StringitemId){returnrepository.getListItem(i