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
相关产品推荐
相关产品推荐

