You need to enable JavaScript to run this app. Android Kotlin如何在Toolbar上添加返回按钮,不显示/闪退如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin如何在Toolbar上添加返回按钮,不显示/闪退如何解决

你现在的代码有几个核心遗漏和错误,逐一修正即可:

  • 第一:Toolbar配置逻辑错误
    你在initToolbar中设置了setDisplayShowHomeEnabled(false),这个配置的作用是隐藏Toolbar左侧的返回按钮区域,同时你遗漏了显示返回按钮必须的setDisplayHomeAsUpEnabled(true)配置,这是返回按钮不显示的核心原因。
    修正后的initToolbar代码如下:
fun initToolbar(){
    // 优先使用ViewBinding获取Toolbar实例,避免findViewById空指针导致闪退
    val toolbar = binding.toolbar ?: findViewById<Toolbar>(R.id.toolbar) ?: return
    setSupportActionBar(toolbar)
    supportActionBar?.apply {
        // 开启左侧按钮区域显示
        setDisplayShowHomeEnabled(true)
        // 显示返回箭头按钮
        setDisplayHomeAsUpEnabled(true)
        // 自定义返回按钮图标
        setHomeAsUpIndicator(R.drawable.ic_baseline_keyboard_arrow_down_24)
        // 隐藏系统默认title,避免和你自定义的中间TextView冲突
        setDisplayShowTitleEnabled(false)
    }
}
  • 第二:没有配置返回按钮点击事件
    仅显示按钮没有点击逻辑的话,点击后不会有响应,需要重写onOptionsItemSelected方法处理返回逻辑:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
    if (item.itemId == android.R.id.home) {
        // 关闭当前页面,返回上一级
        finish()
        return true
    }
    return super.onOptionsItemSelected(item)
}
  • 第三:主题冲突问题
    请确认你的应用主题使用的是不带ActionBar的变体,打开res/values/themes.xml,检查应用主题的父类是否包含.NoActionBar后缀,示例如下:
<style name="Theme.YourAppName" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    <!-- 其他主题配置 -->
</style>

如果使用了带ActionBar的主题,会和你自定义的Toolbar冲突,导致不显示或者空指针闪退。

  • 第四:图标可见性检查
    你当前的Toolbar背景设置为白色,如果你使用的返回按钮图标也是白色的,会出现和背景融为一体看不见的情况,可以临时修改Toolbar背景色为其他颜色测试,或者替换深色的返回按钮图标。

  • 第五:布局检查
    确认RegistrationActivity对应的布局文件中已经正确引入了Toolbar布局,且Toolbar的id为R.id.toolbar,否则findViewById会拿到空对象导致闪退。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 01:24:02