问题标签 [android-architecture-components]

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 投票
2 回答
1071 浏览

android - 将 Rxlifecycle 与 android-arch-lifecycle 组件一起使用是否有必要?

如果应用中使用了android-arch-lifecycle组件,是否需要使用Rxlifecycle?还是 Rxlifecycle 是多余的?或者如果我使用了 Rxlifecycle 和 RxJava,是否有必要使用 android-arch-lifecycle 组件?

0 投票
3 回答
21450 浏览

android - 房间尝试重新打开已经关闭的数据库

从 Android 架构组件中使用 Room 时,我在尝试使用 Dagger 组件访问数据库时收到以下错误:

我使用的是 Dagger 版本2.11和 Room 版本1.0.0-alpha7。该错误在版本上可重现1.0.0-alpha5

在初始化数据库并将其注入我的类后,任何尝试通过 DAO 访问数据库时都会发生此错误。

0 投票
2 回答
2086 浏览

android - 使用 Room 的父类的主键?

我正在使用 Android 架构组件。因此使用Room“ORM”。我有一个EQPreset有成员的类String presetName。这个类有一个名为的子类UserDefinedEQPreset,它包含一个int[] arr. 我已经EQPreset使用注释声明了子类和实体@Entity,因为我只想将这个子类型存储在 db 中。现在我想使用父类的 ( EQPreset) 成员String presetName作为primary key. 如何在primary key使用时声明父类的成员Room。我知道@Primarykey注释用于声明主键。但是如何将父类的成员用作primary key.

0 投票
1 回答
2214 浏览

android - 房间; 将整数数组存储到单独的表中?

使用RoomORM,我已经EQPreset使用@Entity注释声明了一个实体。该实体包含一个数组int[]。它给出以下错误:

错误:无法弄清楚如何将此字段 (int[] arr) 保存到数据库中。您可以考虑为其添加类型转换器。

通常将EQPreset实例保存到数据库中,我会创建一个单独的表来存储数组的值,并有一个指向相关EQPreset.
但是,我需要找到存储usingint[] arr的方法,即通过制作单独的表格或使用任何好的方法/方式。EQPresetRoom

0 投票
2 回答
4363 浏览

android - 支持 Fragment Manager .replace() 和 ViewModel

看来,每当您.replace()在事务中使用 Support Fragment Manager 中的方法时,都会重新创建 ViewModel。这是故意的吗?Fragment 实例本身没有改变,并且 ViewModel 将在旋转/配置更改期间(部分)保留。

我看到以下情况:

  1. 获取 View model ref (count = 0),更新 count = 1,rotate,count = 1,再次调用 onCreate和 count = 0(重新创建视图模型)。
  2. 调用.replace()和视图模型被重新创建(活动和片段实例不变)。

使用支持库 26.0.0。

ViewModel正在我的片段中创建,范围onCreateFragment

如果这是正常的,有人能说明一下吗?

0 投票
3 回答
547 浏览

android - 使用 Activity 和 Fragments 实现新的 Android 架构组件

目前我尝试用android提供的架构组件来实现一个应用程序。就仅在 UI 包中使用活动而言,这没有问题,但如果我在片段容器中实现由一个活动持有的多个片段,我会遇到麻烦。使用片段的数据请求的通信不应该从片段本身调用,而是从其活动调用。在这种情况下,只有活动将注册所需的视图模型,但每个片段的生命周期都没有得到正确处理......我如何在一个活动中使用多个片段从服务器请求数据并了解片段的生命周期,即使当活动正在调用视图模型?

0 投票
3 回答
2583 浏览

android - 生命周期状态总是初始化

我仅在应用程序启动时才尝试调用自定义对话框。

但当前状态始终是 INITIALIZED。LifecycleRegistryOwner我在上面实现接口GameActivity

抱歉,如果我不太了解这个新的 api。谢谢

0 投票
6 回答
11416 浏览

android - 无法创建自定义 ViewModel 的实例

我正在使用 dagger2 库。每当我尝试运行我的项目时,都会说无法创建视图模型类的实例。

我尝试创建实例的主要活动

我的工厂班

我的日志

0 投票
1 回答
2828 浏览

android - kotlin 中的 Android ViewModelProviderFactory

我正在尝试使用 Google 的架构组件。具体来说,我想实现一个ViewModelProvider.Factory来创建一个带有构造函数参数的 ViewModel,如下所示:

我的 ViewModel 看起来像这样:

任何人都知道如何避免最后的讨厌演员:

0 投票
1 回答
808 浏览

android - Android 架构组件、android 绑定和 LiveData

我想知道 android 绑定是否与概念级别的实时数据兼容。有一个简单的任务:单击按钮后调用服务器。所以在我看来我有

并且在 ViewModel 中定义了正确的 onOrderButtonClick(View) 方法。但是为了通过 LiveData 进行服务器调用,我需要我的 Fragment 引用(observe() 方法需要 LifecycleOwner 实例作为第一个参数)。当然,我不能在我的 ViewModel 中引用片段。这里的模式是什么?我真的需要在片段类中实现所有事件方法并将它们委托回视图模型类吗?