gpt4 book ai didi

android - fatal error LifecycleOwners 必须在 registerForActivityResult 开始之前调用 register

转载 作者:行者123 更新时间:2023-12-04 23:37:35 36 4
gpt4 key购买 nike

我有一个简单的空 Activity 来检查是否需要请求权限。当registerForActivityResult被调用,它会崩溃并出现错误 java.lang.IllegalStateException: LifecycleOwner com.example.app.PermsRequester@41a30da is attempting to register while current state is RESUMED. LifecycleOwners must call register before they are STARTED.根据我的研究,我认为我需要检查 savedInstanceStatenull如果是这样,创建一个新的fragment ?我不确定这是否是正确的解决方案或如何实现。下面是代码:

class PermsRequester : AppCompatActivity() {
requestPerms = false

override fun onCreate(savedInstanceState: Bundle?) {
setTheme(R.style.AppTheme)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_perms_requester)

findViewById<Button>(R.id.acceptButton).setOnClickListener { accepted() }
}

private fun accepted() {
//There is code here to check if rationale dialog needs to be displayed
//There is code here to build a mutable list of permissions that need to be requested and sets requestPerms = true

if(requestPerms)
requestPermissions()
}

private fun requestPermissions() {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//app crashes on the following line
val requestMultiplePermissions = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) {
permissions -> permissions.entries.forEach {
//Handles permission result
}
}
}
}
}

最佳答案

您需要 registerForActivityResult之前 onStart的 Activity 。

private lateinit var requestMultiplePermissionsLauncher: 
ActivityResultLauncher<Array<String>>

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

requestMultiplePermissionsLauncher =
registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
permissions.entries.forEach {
//Handles permission result
}
}
}

private fun accepted() {
if(requestPerms) {
val permissions = arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.CAMERA)
requestMultiplePermissionsLauncher.launch(permissions)
}
}

关于android - fatal error LifecycleOwners 必须在 registerForActivityResult 开始之前调用 register,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65121235/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com