kotlin toolbar 无法显示返回键?

2017-12-17 21:16:03 +08:00
 yeelone

正在学习 kotlin,参考的是 kotlin for android develpoer 官方代码 并且自己写着一个 Demo,发现跑起来总是无法调出返回键,思考了一天搜了一天没有得到答案。只好来求助,我把代码传上了码云,请大家帮我看看,问题出在哪里?

点击查看我的代码

我的 demo 截图

官方示例

5483 次点击
所在节点    Android
10 条回复
Eateeer
2017-12-17 21:59:24 +08:00
你把 activity_add_todo.xml 文件第 9 行的 id 去掉试试?
Eateeer
2017-12-17 22:10:42 +08:00
或者你也可以把上述文件第 9 行的 android:id="@+id/include" 改为 android:id="@+id/toolbar"。不过这种修改方式不推荐。
yeelone
2017-12-17 22:40:28 +08:00
@wl9739788 #1 原来是这么简单的问题。真是太感谢了。这是不是 ID 冲突导致的问题?
Eateeer
2017-12-18 00:44:57 +08:00
@yeelone 问题原因可能不是你想的那样。

你的代码里面,是希望拿到 <include/> 引用的布局下的 toolbar 控件,并对这个 toolbar 控件设置一些属性。

当你使用 <include/> 这个标签时,如果没有对 <include/> 添加 id 属性,那么,你是可以在 Activity 中直接获取 include 引用布局里面的控件。我提出的第一种解决方法就是基于此原因。删掉 <include/> 的 id 属性,在你的 AddTodoActivity 类里的 setSupportActionBar(toolbar) 这个方法中,就能找到 toolbar 这个控件。

当你设置了 <include/> 的 id 属性后,include 的 id 值将会传递并赋值给引用布局的根控件 (root view)。在你的代码中,<include/> 的 id 值是 include,因此 <include/> 引用的布局里面,Toolbar 的 id 不再是 toolbar,而是 include。这时候有两种解决方法:

1. 改 xml 代码。将 <include/> 标签 android:id="@+id/include" 改为 android:id="@+id/toolbar",也就是我提出的第二种解决方法。这样你的 Activity 代码中的 setSupportActionBar(toolbar) 就能生效。

2. 改 Activity 代码。将 setSupportActionBar(toolbar) 改为 setSupportActionBar(include as Toolbar?)。这样也是可行的。
yeelone
2017-12-18 09:24:54 +08:00
@wl9739788 非常感谢你的回答,这下我就明白了
gonethen
2017-12-18 17:58:41 +08:00
我也想学 kotlin 开发安卓,求大神带
youngxhui
2017-12-18 22:12:17 +08:00
这个应该不是 kotlin 的锅吧
yeelone
2017-12-18 22:17:32 +08:00
@youngxhui #7 没人说是 kotlin 的锅吧?
youngxhui
2017-12-18 22:30:50 +08:00
@yeelone 好像也是😂
kwanzaa
2017-12-19 18:59:14 +08:00
@gonethen 官方有示例

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/415517

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX