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

Android中点击返回箭头时onBackPressed()未触发的问题

问题原因与解决方案

问题原因

你点击的是ActionBar上的返回箭头(Up按钮),这个按钮默认触发的是onSupportNavigateUp()方法,而非物理/虚拟返回键触发的onBackPressed(),所以你重写的onBackPressed()不会被调用。

解决方案

修改SubActivity.kt,添加两个关键步骤:

  1. 在onCreate中启用ActionBar的Up按钮显示
  2. 重写onSupportNavigateUp()方法,将其逻辑关联到onBackPressed()

修改后的SubActivity.kt代码:

package me.soft.trybackbtnaction

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class SubActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_sub)
        // 启用ActionBar的Up按钮
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
    }

    override fun onBackPressed() {
        super.onBackPressed()
        println("onBackPressed CALLED")
    }

    // 重写Up按钮的触发方法,关联到onBackPressed
    override fun onSupportNavigateUp(): Boolean {
        onBackPressed()
        return true
    }
}

额外说明

如果你的项目使用自定义Toolbar而非默认ActionBar,需要给Toolbar设置导航点击监听:

// 在onCreate中找到Toolbar并设置
val toolbar = findViewById<Toolbar>(R.id.toolbar)
setSupportActionBar(toolbar)
toolbar.setNavigationOnClickListener {
    onBackPressed()
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 15:24:20