为何onActivityResult函数无法重写?提示override修饰符不适用于局部函数
解决onActivityResult无法重写的问题
错误原因分析
提示Modifier 'override' is not applicable to 'local function'的核心原因是:你把onActivityResult定义成了局部函数——也就是写在了另一个函数(比如onCreate())的内部,而override修饰符仅适用于类的直接成员方法,不能用于嵌套在其他函数里的局部函数。
解决步骤
调整方法位置
把onActivityResult方法移到类的直接作用域下,和onCreate、onStart等生命周期方法处于同一层级,不要嵌套在任何其他函数内部。校验方法签名
确保方法签名和父类的完全一致,以Kotlin为例,正确的签名应该是:override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) // 这里编写你的业务逻辑 }(如果是Java,签名为
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data))可选:迁移到官方推荐的新API
如果你使用的是AndroidX组件,建议放弃onActivityResult,改用registerForActivityResultAPI,这是官方推出的替代方案,能更好地处理生命周期,避免此类问题。
内容的提问来源于stack exchange,提问作者Anshuman Sahoo
相关产品推荐
相关产品推荐

