【发布时间】:2020-10-27 12:22:23
【问题描述】:
今天我切换到新的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/*")
}
无法使用这个新的结果 API 手动声明 REQUEST_CODE。
注意:
它有时有效!
[更新]
我注册了多个合同(TakeVideo 和 GetContent),我发现注册的顺序很重要(第一个像一个魅力,但其他的会崩溃)。 也许我们只需要为每个活动注册一份合同?!
[更新 #2]
该问题已在最新版本的活动(1.2.7-alpha07)中得到修复。现在它会警告您添加与活动和片段相关的依赖项。
【问题讨论】:
-
你的片段依赖的版本是什么?
-
有同样的问题,但使用 TakePicture。活动版本为 1.2.0-alpha06
-
我刚刚添加了活动依赖
-
刚刚用
1.2.0-beta01得到了这个,根本没有使用任何碎片!
标签: android android-jetpack onactivityresult startactivityforresult