我在我的项目中使用MVVM、Retrofit、LiveData,但在我看到这些链接之前出现此错误CannotcreateaninstanceofcustomViewModelCannotcreateaninstanceofclassViewModel错误java.lang.RuntimeException:UnabletostartactivityComponentInfo{ir.orangehat.movieinfo/ir.orangehat.movieinfo.application.home.HomeActivity}:java.lang.RuntimeException:Can
问题:我可以在不使用数据绑定(bind)的情况下使用MVVM实现android应用吗?我要解决的问题非常简单:从后端API读取项目列表并在Recylerview中显示它们。我是如何实现的:在View中-我有Activity和RecyclerViewAdapter模型:ApiResponse和数据模型网络-改造API服务,RxJava2对于ViewModel部分-我有一个ViewModel类(不派生自任何东西)基本上调用RetrofitService并使用RxJava调用获取数据。ViewModel有如下调用:voidgetItems();voidaddItemData();voidre
我想我在这里遗漏了一些明显的东西,但是......我将数据存储在DiaryViewModel类的uiModel中,并且由于我使用架构组件,所以我希望通过屏幕旋转保留数据-但事实并非如此。我不知道为什么。这是一个精简的fragmentclassDiaryFragment:Fragment(){privatelateinitvarviewModel:DiaryViewModeloverrideonCreateView(...){viewModel=ViewModelProviders.of(this).get(DiaryViewModel::class.java)viewModel.get
我在recyclerview中显示项目并使用数据绑定(bind)。在xml布局中,我有这样的View:它运行良好,但我有一个问题:虽然初始值viewmodel.expandable为false,但在recyclerview初始化并将项目绑定(bind)到View时,此布局在屏幕上闪烁一次。因此,我决定暂时隐藏此布局并尝试在xml中使用default参数,如下所示:但是出了点问题:error:'View'isincompatiblewithattributeandroid:visibility(attr)enum[gone=2,invisible=1,visible=0].所以,或者我错
我有以下流程,其中Fragment的内容是一个具有各种输入字段的表单。fragmentA->fragmentB->fragmentC->fragmentD...例如,当用户完全填充FragC并返回FragB时,所有FragB数据都将被存储并保持原样,但是当向前移动回C时,所有输入数据都消失了.想象一下同样的场景,用户填写了FragA、B,他已经填写了FragC的一半字段,他选择返回到FragA,当他导航回来时,所有输入数据在之前的Frag(B和A),但是一旦他决定向前移动回到他所在的C,来自B和C的数据就会丢失,并在每一个新的步骤中被新的fragment替换。因此,输入数据仅在返回时保
我的项目中有一个复杂的屏幕,我将其分成多个fragment。我试图遵循这些类的MVVM架构,所以哪个fragment有自己的ViewModel和契约(Contract)类。问题是所有ViewModel都需要相同的对象实例(我们称它为Book)来执行Room事务。是否有在ViewModel之间共享数据(或LiveData)的正确方法?我知道SharedViewModel的概念,但我不知道我是否可以将它应用于这种情况。我也考虑过使用MediatorLiveData但也没有找到好的方法。我正在考虑用BookObservableProvider上课(我们称之为LiveData)(或RxSubj
MVVM架构,这是我的View(Activity):privateMyAppapp;privateMainActivityVMviewModel;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);app=(MyApp)this.getApplication();ActivityMainBindingbinding=DataBindingUtil.setContentView(this,R.layout.activity_main);MainActivit
所以我正在尝试使用Robolectric为我的Activity编写单元测试,但是我不知道如何提供模拟View模型,因为我的虚拟机是如何在类中直接实例化的。这是因为Jetpack的生命周期感知ViewModel需要一个Provider类来实例化。所以,我实际上是在注入(inject)自定义提供程序,然后使用它来创建我的ViewModel。我看过其他示例,但它们看起来都非常令人困惑。我如何实现这一点?classActivityEpisodeList:AppCompatActivity(){@InjectlateinitvarvmFactory:ViewModelProvider.Facto
我正在为Activity及其所有fragment使用SingleviewModel。所以要初始化viewmodel如果必须在所有fragment的onActivityCreated中编写此设置代码overridefunonActivityCreated(savedInstanceState:Bundle?){super.onActivityCreated(savedInstanceState)viewModel=ViewModelProviders.of(activity!!).get(NoteViewModel::class.java)}我正在浏览AndroidKTX扩展页面:(re
我对使用新架构组件时数据绑定(bind)的工作方式感到有点困惑。假设我有一个简单的Activity,其中包含一个列表、一个ProgressBar和一个TextView。Activity应该负责控制所有View的状态,但是ViewModel应该保存数据和逻辑。例如,我的Activity现在看起来像这样:@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);binding=DataBindingUtil.setContentView(this,R.layout.