dar*_*h f 15 android onactivityresult startactivityforresult android-jetpack
今天我切换到新的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)
Run Code Online (Sandbox Code Playgroud)
执行这些行时:
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/*")
}
Run Code Online (Sandbox Code Playgroud)
无法REQUEST_CODE使用此新结果 API 手动声明。
注意:
它有时有效!
[更新]
我注册了多个合约(TakeVideo 和 GetContent),我发现注册的顺序很重要(第一个像魅力一样,但其他的会崩溃)。也许我们只需要为每个活动注册一个合同?!
[更新 #2]
该问题已在最新版本的活动 (1.2.7-alpha07) 中得到修复。现在它会警告您添加活动和片段相关的依赖项。
Sau*_*rat 27
添加或更新此依赖项:
implementation 'androidx.fragment:fragment:1.3.0'
Run Code Online (Sandbox Code Playgroud)
使用ActivityResultAPI 时,请使用此片段依赖项以确保FragmentActivity兼容。
| 归档时间: |
|
| 查看次数: |
3297 次 |
| 最近记录: |