Android中点击返回箭头时onBackPressed()未触发的问题
问题原因与解决方案
问题原因
你点击的是ActionBar上的返回箭头(Up按钮),这个按钮默认触发的是onSupportNavigateUp()方法,而非物理/虚拟返回键触发的onBackPressed(),所以你重写的onBackPressed()不会被调用。
解决方案
修改SubActivity.kt,添加两个关键步骤:
- 在
onCreate中启用ActionBar的Up按钮显示 - 重写
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
相关产品推荐
相关产品推荐

