我试图用 DI 的 Hilt(坏主意)替换 Koin,现在我遇到了这个错误:Hilt_App.java:21: 错误:找不到符号返回 DaggerApp_HiltComponents_ApplicationC.builder() ^ 符号:变量 DaggerApp_HiltComponents_ApplicationC
它是什么?如何解决?
我按照官方文档设置了一个带有 ViewPager2 的 TabLayout。我以这种方式使用 TabLayoutMediator 将 TabLayout 与 ViewPager2 连接起来:
TabLayoutMediator(binding.tabLayout, binding.viewPager) { tab, position ->
tab.setIcon(getTabIcon(position))
tab.text = getTabTitle(position)
}.attach()
Run Code Online (Sandbox Code Playgroud)
但是 Leak Canary 检测到似乎与 TabLayout 和 TabLayoutMediator 相关的内存泄漏。日志如下:
2020-05-13 17:57:32.914 D/LeakCanary: ????
2020-05-13 17:57:32.914 D/LeakCanary: ? GC Root: Local variable in native code
2020-05-13 17:57:32.914 D/LeakCanary: ?
2020-05-13 17:57:32.914 D/LeakCanary: ?? android.net.ConnectivityThread instance
2020-05-13 17:57:32.914 D/LeakCanary: ? Leaking: NO (PathClassLoader? is not leaking)
2020-05-13 17:57:32.914 D/LeakCanary: ? Thread name: 'ConnectivityThread'
2020-05-13 17:57:32.914 D/LeakCanary: ? ? ConnectivityThread.contextClassLoader
2020-05-13 17:57:32.914 D/LeakCanary: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用新的 Activity Results API 来替换 startActivityForResult。如果我在 Fragment 中调用 registerForActivityResult 一切正常。但是,如果我在 AppCompatActivity 中调用相同的方法,IDE 会显示“未解析的引用”错误。无论如何,应用程序构建时没有错误并按预期运行。如何删除 IDE 中的“未解析引用”错误?
我使用: import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity
依赖项:“androidx.activity:activity-ktx:${versions.activity_ktx}”“androidx.fragment:fragment-ktx:${versions.fragment_ktx}”
我按照官方指南使用 WorkManager(Kotlin 版本)设置了一个长时间运行的工作线程。现在我需要用操作进度更新通知。文档说:
// 当需要更新 // 正在进行的通知时定期调用 setForegroundInfo()
但是我找不到任何 setForegroundInfo() 方法。那么如何更新正在进行的通知呢?
例外:面向 S+(版本 31 及更高版本)要求在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一
导致异常的代码:WorkManager.getInstance(context).createCancelPendingIntent(id)
build.gradle 选项:
编译SdkVersion 31
buildToolsVersion“30.0.3”(版本 31.0.0 出现错误:安装的构建工具修订版 31.0.0 已损坏。使用 SDK 管理器删除并重新安装)。
模拟器:API 31(使用 API S 一切正常)
依赖项:
// 工作管理器
实现“androidx.work:work-runtime-ktx:2.7.0-alpha05”
实施 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
我认为问题可能出在BuildCompat.java的这个方法中:
/**
* Checks if the device is running on a pre-release version of Android S or a release version of
* Android S or newer.
* <p>
* <strong>Note:</strong> When Android S is finalized for release, this method will …Run Code Online (Sandbox Code Playgroud)