小编Mar*_*arr的帖子

Room:使用@Transaction时收到错误

我的DAO类中有一个使用@Transaction注释的方法,这会导致以下错误:

DAO方法只能使用以下方法之一进行注释:插入,删除,查询,更新

这是我的班级:

@Dao interface Dao {

    @Insert(onConflict = REPLACE) fun insertList(chacaras: List<String>)

    @Query("SELECT * FROM chacara WHERE cityId = :cityId")
    fun getListOfCity(cityId: String): LiveData<List<String>>

    @Delete fun deleteList(chacaraList: List<String>)

    @Transaction
    fun updateList(list: List<String>){
        deleteList(list)
        insertList(list)
    }

}
Run Code Online (Sandbox Code Playgroud)

当我删除使用@Transaction注释的方法时,它会正常编译.有没有什么办法解决这一问题?

android kotlin android-room

15
推荐指数
1
解决办法
2048
查看次数

Android Room Type Converter仅在选择一列时不转换

我有一个名为Chacara的类,它有各种属性,包括thumbList,它是一个List <String>

将它保存到ROOM时,我使用类型转换器:

class DbTypeConverter {

    @TypeConverter
    fun listToString(list: List<String>): String = Gson().toJson(list)

    @TypeConverter
    fun stringToList(string: String): List<String> {
        return Gson().fromJson<List<String>>(string, object: TypeToken<List<String>>() {}.type)
    }

}
Run Code Online (Sandbox Code Playgroud)

当我获取整个对象并访问thumbList属性时,它按预期工作:

@Query("SELECT * FROM chacara WHERE id = :id LIMIT 1")
abstract fun getChacaraWithId(id: String): LiveData<Chacara>
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试仅获取thumbList属性时,结果不会转换:

@Query("SELECT thumbUrlList FROM chacara WHERE id = :id")
abstract fun getChacaraThumbList(id: String): LiveData<List<String>>
Run Code Online (Sandbox Code Playgroud)

我还在TypeConverter中添加了一个日志,以确保它没有被调用.

TL; DR:ROOM不调用TypeConverter而不将String转换回List(SELECT'column_name'),但在请求整个对象时工作(SELECT*)

android android-room android-architecture-components

7
推荐指数
1
解决办法
417
查看次数

Firebase Analytics无法使用Instant App或Normal App

我有一个模块化的应用程序,以支持即时应用程序.

应用模块:

  • 应用
  • instantapp
  • 基础
  • 主要
  • 详情
  • 搜索

我尝试通过添加以下内容添加Firebase:

  • classpath' com.google.gms:google-services:3.1.1'→到Project Level build.gradle
  • api" com.google.firebase:firebase-core:${versions.firebase}"→到基本模块
  • 应用插件:' com.google.gms.google-services'→到基本模块的底部
  • google-services.json →到基本模块文件夹

当我运行非即时应用程序时,我收到以下错误:

I/FirebaseInitProvider:FirebaseApp初始化失败

E/FA:GoogleService初始化失败,状态:10,来自名称为google_app_id的字符串资源中的Google app id值丢失.

I/FA:应用程序测量正在启动,版本:11720

I/FA:启用调试日志记录运行:adb shell setprop log.tag.FA VERBOSE

I/FA:要启用更快的调试模式事件日志记录运行:adb shell setprop debug.firebase.analytics.app com.punpuf.chacaraselazer.app

E/FA:缺少google_app_id.Firebase Analytics已停用.见https:// goo(...)

E/FA:无法上传.应用测量禁用

I/FA:找不到标记管理器,因此不会使用

当我运行即时应用程序时,我收到以下错误:

V/FA:取消工作.JobID:1799580119

E/FirebaseApp:Firebase API初始化失败.(...)引起:java.lang.NullPointerException:尝试在空对象引用上调用接口方法'void android.app.job.IJobScheduler.cancel(int)'

I/FirebaseInitProvider:FirebaseApp初始化成功

如果我添加以下行:" FirebaseAnalytics.getInstance(this)",它不仅会收到以前的错误,还会崩溃:

E/AndroidRuntime:FATAL EXCEPTION:main进程:com.punpuf.chacaraselazer.app,PID:11273 java.lang.RuntimeException:无法启动活动ComponentInfo {(...)}:java.lang.NullPointerException:尝试调用接口null对象引用上的方法'void android.app.job.IJobScheduler.cancel(int)'

所以我的问题是如何让Firebase Analytics工作,而不是在我的应用的即时和非即时版本上崩溃.

虽然这个问题有点类似于在Android Instant应用程序中FirebaseApp初始化失败,但我的不包含相同类型的错误.

更新:我已经创建了一个新的Firebase项目,并更新了我的google-services.json,但仍然无效.

这是我的gradle文件:

android firebase firebase-analytics android-instant-apps

7
推荐指数
1
解决办法
3744
查看次数

如何抑制约束布局错误"ConstraintLayout不支持MATCH_PARENT"

在最新版本的约束布局Beta 5中,使用match_parent会引发异常:

android.view.InflateException: Binary XML file line #12: MATCH_PARENT is not supported in ConstraintLayout
Run Code Online (Sandbox Code Playgroud)

如发行说明中所述:

"(...)它的行为未定义.为了减少错误的风险,如果我们遇到它,我们现在抛出异常." - 来源

他们建议正确的用法是使用0dp(MATCH_CONSTRAINT),但由于我在约束布局中有一个抽屉布局,因此将宽度设置为0dp会抛出"DrawerLayout必须使用MeasureSpec.EXACTLY测量"错误.

所以我的问题是如何抑制错误"ConstraintLayout不支持MATCH_PARENT"?

android android-constraintlayout

6
推荐指数
2
解决办法
4248
查看次数

Jetpack Compose 底部工作表初始化错误

在 Jetpack compose 1.0.0-beta01 中,我像这样调用 BottomSheetScaffold:

BottomSheetScaffold(
    scaffoldState = bottomSheetScaffoldState,
    sheetContent = { Text("") },
    sheetShape = Shapes.large,
    backgroundColor = AppTheme.colors.uiBackground,
    modifier = modifier
    
) { (content) }
Run Code Online (Sandbox Code Playgroud)

...并收到以下错误:

java.lang.IllegalArgumentException:初始值必须有关联的锚点。

有关解决此问题的任何提示?

android android-jetpack-compose

5
推荐指数
3
解决办法
936
查看次数