标签: android-architecture-components

房间试图重新打开已经关闭的数据库

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

java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: (database path)
Run Code Online (Sandbox Code Playgroud)

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

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

android android-room android-architecture-components

34
推荐指数
2
解决办法
2万
查看次数

导航架构组件 - 将参数数据传递给startDestination

我有一个活动A,它启动活动B传递一些意图数据.活动B托管来自新导航架构组件的导航图.我想将该意图数据作为参数传递给startDestination片段如何做到这一点?

navigation android android-architecture-components android-architecture-navigation

33
推荐指数
6
解决办法
1万
查看次数

Android持久性室:"无法弄清楚如何从游标中读取此字段"

我正在尝试使用新的Android Persistence Room Library在两个数据库表之间创建关系.我查看了文档,并尝试实现https://developer.android.com/reference/android/arch/persistence/room/Relation.html上的示例:

 @Entity
 public class User {
 @PrimaryKey
     int id;
 }

 @Entity
 public class Pet {
     @PrimaryKey
     int id;
     int userId;
     String name;

 }

 @Dao
 public interface UserDao {
     @Query("SELECT * from User")
     public List<User> loadUser();
 }

 @Dao
 public interface PetDao {
     @Query("SELECT * from Pet")
     public List<Pet> loadUserAndPets();
 }


 public class UserAllPets {
     @Embedded
     public User user;
     @Relation(parentColumn = "user.id", entityColumn = "userId", entity = Pet.class)
     public List pets;
 }

 @Dao
 public interface UserPetDao { …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-room android-architecture-components

32
推荐指数
1
解决办法
2万
查看次数

1.1.0中不推荐使用ViewModelProviders

在查看的Google文档ViewModel,他们显示了以下有关如何获取的示例代码ViewModel

val model = ViewModelProviders.of(this).get(MyViewModel::class.java)
Run Code Online (Sandbox Code Playgroud)

使用最新的依赖项时android.arch.lifecycle:extensions:1.1.1,没有此类ViewModelProviders

要在文档ViewModelProviders,我看到一个评论说:

在API级别1.1.0中不推荐使用该类。使用ViewModelProvider.AndroidViewModelFactory

问题是,当尝试使用时ViewModelProvider.AndroidViewModelFactory,无法找到等效的of方法来获取的实例ViewModel

我尝试做的是:

ViewModelProvider.AndroidViewModelFactory.getInstance(application).create(PlayerViewHolder::class.java)
Run Code Online (Sandbox Code Playgroud)

因此,方法的名称create每次调用时都会得到一个ViewModel的新实例,这不是我想要的。

有什么想法可以替换上面不推荐使用的代码吗?

android android-gradle-plugin android-viewmodel android-architecture-components

32
推荐指数
16
解决办法
1万
查看次数

如何在Navigation Controller中使用共享元素转换

我想在导航到其他片段时使用导航架构组件添加共享元素转换.但我不知道怎么做.在文件中也没有任何关于它的内容.有人能帮我吗?

android navigationcontroller android-architecture-components

31
推荐指数
5
解决办法
9241
查看次数

无法解决:android.arch.lifecycle:extensions:1.0.0-alpha1 android studio 3.0

我正在android studio 3.0中使用android插件'com.android.tools.build:gradle:3.0.0-alpha1'和gradle版本构建一个项目gradle-4.0-milestone-1-all.zip.

二手maven repo:

maven {
            url 'https://maven.google.com'
      }
Run Code Online (Sandbox Code Playgroud)

此外,在我的项目中使用android Room持久性和生命周期.已经在我的app gradle文件中声明了以下依赖项:

compile "android.arch.lifecycle:extensions:1.0.0-alpha1"
compile "android.arch.persistence.room:runtime:1.0.0-alpha1"
annotationProcessor "android.arch.lifecycle:compiler:1.0.0-alpha1"
annotationProcessor "android.arch.persistence.room:compiler:1.0.0-alpha1"
Run Code Online (Sandbox Code Playgroud)

同步并构建项目时,它显示以下错误:

Failed to resolve: android.arch.lifecycle:extensions:1.0.0-alpha1

我是否遗漏了这个问题或某些其他解决方案.

android android-lifecycle android-studio-3.0 android-architecture-components

30
推荐指数
2
解决办法
3万
查看次数

房间"不确定如何将光标转换为此方法的返回类型":哪种方法?

Error:Not sure how to convert a Cursor to this method's return type
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
Compilation failed; see the compiler error output for details.
Run Code Online (Sandbox Code Playgroud)

使用Room我收到此错误,我想找出导致它的方法.

我有多个DAOs,总共有大约60个方法,并且在添加方法之后弹出了这个错误(从另一个完美工作的复制和粘贴,只是将字段更改为设置).

我可以发布整个类的DAOs,但我想知道哪种方法失败了.我试着用Run with --stacktrace,Run with --info--debug option,但这些都不显示出任何有价值的信息.

我添加的方法是一个@Query UPDATEInt返回类型,如在建议的文档

UPDATE或DELETE查询可以返回void或int.如果是int,则该值是受此查询影响的行数.

编辑:我想补充一点,我尝试删除该方法,使DAO回到工作状态,但它仍然给我这个错误.

EDIT2:添加gradle控制台输出,因为在评论中不可读:

error: Not sure how to convert a Cursor to this method's return type
error: Not sure how to convert a Cursor to …
Run Code Online (Sandbox Code Playgroud)

android dao kapt android-room android-architecture-components

30
推荐指数
8
解决办法
2万
查看次数

如何使用Architecture组件导航控制器添加(而不是替换)片段

我有一个产品列表片段和许多其他片段的活动,我正在尝试使用架构组件导航控制器.

问题是:它取代了(起始目的地)产品列表片段,我不希望在用户单击后退按钮时重新加载列表.

如何使片段事务成为添加而不是替换.

android android-architecture-components android-architecture-navigation

30
推荐指数
4
解决办法
1482
查看次数

导航架构组件 - 具有CollapsingToolbar的详细信息视图

新导航组件的拟议实践在I/O中提供,具有以下模板和建议的理念:

  1. 应用程序的一个活动
  2. 活动包含工具栏和底部导航栏

典型的应用程序通常具有包含CollapsingToolbar的详细视图.如何在该架构下构建它?

  • 将工具栏移动到每个片段XML?
  • 以编程方式实现折叠工具栏?
  • 将细节片段移动到它自己的活动(它可能会使用它自己的深层链接)并"打破"这个哲学?

android android-architecture-components android-jetpack android-architecture-navigation

29
推荐指数
2
解决办法
1339
查看次数

Android WorkManager中的异步工作者

谷歌最近宣布了新的WorkManager架构组件.通过WorkManagerdoWork()课堂上实现,可以很容易地安排同步工作,但是如果我想在后台进行一些异步工作呢?例如,我想使用Retrofit进行网络服务调用.我知道我可以发出同步网络请求,但它会阻塞线程并且感觉不对.有没有解决方案,或者目前还不支持?

android android-architecture-components android-workmanager

29
推荐指数
6
解决办法
1万
查看次数