You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 11下toolbar返回按钮与侧滑返回手势执行结果不一致问题

问题原因

  • 核心bug出在基类onOptionsItemSelected的返回逻辑:你已经手动处理了返回按钮的点击事件、调用了onBackPressed,但没有返回true消费该事件,而是继续执行了super.onOptionsItemSelected(item)的默认逻辑。
  • 系统原生onOptionsItemSelected在检测到点击项是android.R.id.home时,会执行默认的向上导航逻辑,该逻辑会直接结束当前Activity,并且会把你在onBackPressed中设置的RESULT_OK重置为默认的RESULT_CANCELED(对应值为0),导致前序页面收到的resultCode不符合预期。
  • 侧滑返回手势直接触发onBackPressed流程,没有额外的系统默认导航逻辑介入,所以设置的返回值可以正常生效。

解决方案

修改基类的onOptionsItemSelected方法,处理完返回按钮点击事件后直接返回true,标记该事件已被消费,不再交给系统处理即可:

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    // 此处处理返回箭头点击事件
    if (item.itemId == android.R.id.home) {
       onBackPressed() // 调用当前Activity的onBackPressed方法
       return true // 新增:消费事件,终止后续系统默认逻辑
    }
    return super.onOptionsItemSelected(item)
}

内容的提问来源于stack exchange,提问作者Ethan Allen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 00:51:04