问题标签 [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 投票
0 回答
666 浏览

java - Android 架构组件:如何观察数据库中的单个更改

我有几个问题,请看下面的问题:

守则

D b

模型视图

实体(科特林)

实时数据

问题一:

使用上面的代码,我的理解是我应该使用viewModel. 我想使用 ViewModel,但在“观察”时没有得到任何数据,我该如何解决这个问题?

但这不会返回任何数据,而以下效果很好:

问题2 :

如果我使用这个:

如何观察数据库中的单个更改,例如删除行或添加新行?

0 投票
1 回答
3450 浏览

java - 如何正确使用 Dagger2 和新的 Android 架构组件

我正在尝试使用新的架构组件,但我对 dagger 还是很陌生,而且我缺少一些东西。

使用下面的代码,我得到一个 NullPointerException,找不到位置。另外,如果我还有其他需要修复或改进的地方,请提出建议。

代码: 视图模型

存储库

辛格尔顿工厂

}

然后在 MainActivity 中:

日志猫

0 投票
2 回答
2425 浏览

android - 如何在扩展 LifecycleActivity 的视图中设置SupportActionBar

我有一个扩展 AppCompactActivity 的 Activity,并且在onCreate方法中我以通常的方式设置了ToolbarusingsetSupportActionBar方法:

但是现在我有一个ViewModel组件,并且要在作为此活动的子项的片段之间共享数据并管理生命周期,我必须在 Activity 中获取此组件,因此我将其扩展为 LifecycleActivity。

但我注意到 LifecycleActivity 与 AppCompatActivity 无关,FragmentActivity 也没有。

难道我做错了什么?

0 投票
6 回答
59082 浏览

android - Android Room:使用 Room 插入关系实体

我已经使用Relation在 Room 中添加了一对多关系。我参考这篇文章为 Room 中的关系编写了以下代码。

该帖子讲述了如何从数据库中读取值,但将实体存储到数据库中导致userId为空,这意味着这两个表之间没有关系。

我不确定在有价值的同时进入数据库的理想insert方式UserList of Pet什么userId

1) 用户实体:

2) 宠物实体:

3) UserWithPets POJO:

现在要从数据库中获取记录,我们使用以下命令DAO


编辑

我在问题跟踪器上创建了这个问题https://issuetracker.google.com/issues/62848977 。希望他们会为此做点什么。

0 投票
2 回答
12674 浏览

android - Room - LiveData 观察者在数据库更新时不会触发

我试图在下面的代码中找出,为什么一旦我用新数据填充数据库,Room 的 LiveData observable 不会给我新的转变。

这是放在我活动的 onCreate 方法上的:

这是 populateAdapter 方法:

我还有以下填充数据库的代码(我使用 RxJava 在 IO 线程上完成工作,因为 Room 需要在主线程之外调用它的代码):

在我开始观察我的 shiftsViewModel 后调用persistShifts 时出现的问题。我希望我的观察者(LiveData)会被所有新添加的班次触发。事实证明,观察者被触发,但返回的是一个空的班次列表。使其“工作”的唯一方法是我离开活动(因此破坏当前的 ViewModel)并再次进入。这一次,viewModel 的 LiveData 为我提供了之前坚持的所有转变,正如预期的那样。

这是其余的代码:

道:

视图模型:

为什么我没有立即获得在 observe() 回调中坚持的班次列表?

0 投票
6 回答
11456 浏览

android - 带有 Android Room 的可重用通用基类 DAO

有什么方法可以使用 Android Room 创建可重用的通用基类 DAO?

在不必声明相同的接口成员并为每个子类编写查询的情况下,我无法想出任何方法来实现这一点。当处理大量类似的 DAO 时,这变得非常乏味......

0 投票
3 回答
3141 浏览

android - LiveData 和 LifecycleObserver 有什么区别

我已经阅读了android官方文档中关于生命周期实时数据的文档。我知道该类实现了 LifeCycleObserver 并使位置侦听器自动关闭或打开。我也知道实时数据可以自动使其处于活动状态或不活动状态。我尝试使用这两种方式来实现 Location Observer。它可以工作,并且在更新位置时显示 Toast 2 次。

我的问题是,如果我真的想实现数据库连接、GPS 位置、下载图像、运行后台服务等功能,这两种方式有什么区别。我可以只使用 LiveData 类吗?因为我只需要实现主动和非主动功能。

LocationLiveData.java

MyLocationListener.java

组件活动.java

0 投票
4 回答
3507 浏览

android - 无法导入 android.arch.persistence.room.testing.MigrationTestHelper

我已阅读Room Persistence Library。我还克隆了 android-architecture-components然后我尝试添加迁移测试。但是,我无法导入

我也使用最新的 lib 版本。

这是 MigrationTest 的代码

0 投票
2 回答
2751 浏览

android - 为什么在片段重新创建时 onChange() 调用了两次

我正在尝试使用新的 android 架构组件,但我有一刻感到困惑。

我创建了一个 ViewModel 类

在我的 LifeCycleFragment 中观察 LiveData

但是当我用另一个 Fragment 替换这个 Fragment 并切换回这个 Fragment 时,该方法onChange被调用了两次,并在rvAdapter.

0 投票
1 回答
922 浏览

android - Android 房间数据库。如何将我的模型类添加到房间数据库中

我遇到了将模型类添加到 Room 数据库的问题。我读过@Relation、@Embedded,但我不知道如何处理我的模型类。

这里我的模型类来自服务器。我需要存储这些数据

FotosItem 类

BidsItem 类

如果有人告诉我需要做什么,或者至少要朝哪个方向前进,我将不胜感激