小编chr*_*tel的帖子

如果查询没有结果,Room 会返回什么

很难找到这个答案,而且文档似乎没有回答这个问题。如果我有一个基本的 ROOM 查询,

@Query("SELECT * FROM geotable WHERE geohash = :geohash")
abstract suspend fun getGeoTable(geohash: String) : GeoTable

Run Code Online (Sandbox Code Playgroud)

并且没有这样的项目使用这个主键,会发生什么?Android studio 表示 DAO 对象永远不会返回 null。似乎只有当您使用我没有使用的 RxJava 的 Single 时才会抛出 EmptyResultSetException 。那么,当普通的旧 ROOM 什么也没找到时,它会抛出什么呢?

sqlite android android-room

19
推荐指数
2
解决办法
5985
查看次数

requireActivity 和 onActivityCreated 有什么区别

在我的代码中,我在 onCreateView() 之后加载图片很不方便,因为我不确定活动是否可用。因为 Glide 需要一个活动上下文,所以我将代码部分放入 onActivityCreated()


    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)

                //Crash unexpected since onActivityCreated should always have activity available
                Glide.with(activity!!)
                    .load(viewModel.moment!!.mediaPath)
                    .into(binding.momentPhoto);
    }
Run Code Online (Sandbox Code Playgroud)

然而,在浏览了 Github 上的一些最佳实践之后,许多示例在 onCreateView() 中加载照片。他们通过使用 requireActivity() 方法来做到这一点

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = DataBindingUtil.inflate(layoutInflater, R.layout.fragment_photo_editor, container, false)

        Glide.with(requireActivity())
              .load(viewModel.moment!!.mediaPath)
              .into(binding.momentPhoto);

        return binding.root
    }
Run Code Online (Sandbox Code Playgroud)

有谁知道在 onActivityCreated() 之后使用活动引用和从 requireActivity() 获取活动引用有什么区别?

android android-fragments

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

CoroutineDispatcher 注入时 Hilt 构建失败

不确定为什么构建失败。一切似乎都在受控之中

\n
class MapObjectRepositoryIMPL @Inject constructor(\n    @ApplicationContext context : Context,\n    val mapObjectDao: MapObjectDao,\n    val barrechatNetwork: BarreNetwork,\n    @DefaultDispatcher private val defaultScope: CoroutineContext\n) : MapObjectRepository {\n\n
Run Code Online (Sandbox Code Playgroud)\n
@Module\n@InstallIn(ApplicationComponent::class)\nobject DispatcherModule {\n\n    @DefaultDispatcher\n    @Provides\n    fun providesDefaultDispatcher(): CoroutineDispatcher = Dispatchers.Default\n\n    @IoDispatcher\n    @Provides\n    fun providesIoDispatcher(): CoroutineDispatcher = Dispatchers.IO\n\n    @MainDispatcher\n    @Provides\n    fun providesMainDispatcher(): CoroutineDispatcher = Dispatchers.Main\n}\n\n@Qualifier\n@Retention(AnnotationRetention.BINARY)\nannotation class IoDispatcher\n\n@Qualifier\n@Retention(AnnotationRetention.BINARY)\nannotation class MainDispatcher\n\n@Qualifier\n@Retention(AnnotationRetention.BINARY)\nannotation class DefaultDispatcher\n
Run Code Online (Sandbox Code Playgroud)\n

我收到的错误是这样的,但看起来我正确提供了所有内容,限定符和对存储库类的注入,这很奇怪......

\n
ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.1ANTLR Runtime version 4.5.3 used for parser …
Run Code Online (Sandbox Code Playgroud)

android dagger kotlin-coroutines dagger-hilt

11
推荐指数
1
解决办法
3528
查看次数

AWS Amplify 身份验证错误

我正在使用 Android Amplify 库。我无法找出从Amplify.Auth.signIn()函数传回的错误类型。我没有在任何地方找到这方面的文档。现在我只是在猜测它会返回什么。我想要的是告诉用户如何从错误中恢复。用户名不存在,密码不正确,格式错误等。阅读源代码我给我的印象是 AmplifyException.recoveryMessage 是我想要的,但这仍然有问题,因为它不允许我自定义消息。

/**
 * Sign in the user to the back-end service and set the currentUser for this application
 * @param username User's username
 * @param password User's password
 */
override fun initiateSignin(username : String, password : String) {
    //Sign in the user to the AWS back-end
    Amplify.Auth.signIn(
        username,
        password,
        {result ->
            if (result.isSignInComplete) {
                Timber.tag(TAG).i("Sign in successful.")

                //Load the user if the sign in was successful
                loadUser()

            } else {
                Timber.tag(TAG).i("Sign in unsuccessful.") …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cognito aws-amplify aws-amplify-sdk-android

5
推荐指数
2
解决办法
2488
查看次数

如何在 Kotlin 中访问枚举值

我正在尝试迭代一个枚举,但我无法访问它们设置的任何值。Android Studio 只能看到名称和序号,而看不到其他任何东西。

我不确定这是否是 android studio 的问题,因为 kotlin 枚举的其他在线教程似乎做我所做的并且工作得很好。

    enum class TimeStamps(value : Long, text : String) {
        Hour(0, "Past Hour"),
        Day(3600000, "Today"),
        Yesterday(86400000, "Yesterday"),
        Week(172800000, "This week"),
        LastWeek(604800000, "Last week"),
        LastMonth(1209600000, "Last month"),
        LastYear(2628000000, "Last year"),
        LongTime(31540000000, "A long time ago")
    }


TimeStamps.LastMonth.value
TimeStamps.LastMonth.text  //Both of these are said to be undefined by Android Studio

enumValues<TimeStamps>().forEach {

            it.value //Also undefined
}
Run Code Online (Sandbox Code Playgroud)

我不确定发生了什么。我得到的唯一错误消息是Unresolved Reference错误。非常感谢任何帮助,谢谢!

enums android kotlin

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