android - 新结果 API 错误:requestCode 只能使用低 16 位
问题描述
今天我换了新的ResultAPI
,我遇到了这个错误:
java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode
at androidx.fragment.app.FragmentActivity.checkForValidRequestCode(FragmentActivity.java:715)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:673)
at androidx.core.app.ActivityCompat.startActivityForResult(ActivityCompat.java:234)
at androidx.activity.ComponentActivity$2.onLaunch(ComponentActivity.java:207)
at androidx.activity.result.ActivityResultRegistry$3.launch(ActivityResultRegistry.java:147)
at androidx.activity.result.ActivityResultLauncher.launch(ActivityResultLauncher.java:42)
at .MainActivity.getVideo(MainActivity.kt:61)
at .MainActivity.access$getVideo(MainActivity.kt:18)
at .MainActivity$onCreate$2.onClick(MainActivity.kt:42)
at android.view.View.performClick(View.java:5232)
at android.view.View$PerformClick.run(View.java:21289)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:168)
at android.app.ActivityThread.main(ActivityThread.java:5885)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
执行这些行时:
private val takeFile = registerForActivityResult(GetContent()) {
Log.e("MainActivity", "fileName: $it")
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
btn_get_video.setOnClickListener {
getVideo()
}
}
private fun getVideo() {
takeFile.launch("video/*")
}
无法REQUEST_CODE
使用这个新的结果 API 手动声明。
注意:
它有时有效!
[更新]
我注册了多个合同(TakeVideo 和 GetContent),我发现注册的顺序很重要(第一个像一个魅力,但其他的会崩溃)。也许我们只需要为每个活动注册一个合同?!
[更新 #2]
该问题已在最新版本的活动 (1.2.7-alpha07) 中得到修复。现在它警告您添加活动和片段相关的依赖项。
解决方案
添加或更新此依赖项:
implementation 'androidx.fragment:fragment:1.3.0'
使用ActivityResult
API 时,请使用此片段依赖项以确保其FragmentActivity
兼容。
推荐阅读
- c# - C# Best Buy Web Scraping - 无法添加到购物车元素
- c# - 无法将用户输入数据绑定到数据网格
- html - 单个标签来分隔 HTML 中的段落?
- next.js - TailwindCSS 样式未应用于 Nextjs 服务器端
- python - Python将多个列表与比较表进行比较
- angular - Concat with if in angular(如何使用带条件的顺序请求)
- optaplanner - 多线程时 OptaPlanner 出错(无法查找外部对象)
- r - 如何在 Mac 上确定和增加分配给 R 的内存
- soot - wala 和 soot 和有什么不一样?
- python - Python Pandas 使用 count、drop_duplicates 来获取预重复删除列数的差异