V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yeelone
V2EX  ›  Android

kotlin toolbar 无法显示返回键?

  •  
  •   yeelone · 2017-12-17 21:16:03 +08:00 · 4883 次点击
    这是一个创建于 2293 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    点击查看我的代码

    我的 demo 截图

    demo

    官方示例 demo

    10 条回复    2017-12-19 18:59:14 +08:00
    Eateeer
        1
    Eateeer  
       2017-12-17 21:59:24 +08:00   ❤️ 1
    你把 activity_add_todo.xml 文件第 9 行的 id 去掉试试?
    Eateeer
        2
    Eateeer  
       2017-12-17 22:10:42 +08:00
    或者你也可以把上述文件第 9 行的 android:id="@+id/include" 改为 android:id="@+id/toolbar"。不过这种修改方式不推荐。
    yeelone
        3
    yeelone  
    OP
       2017-12-17 22:40:28 +08:00
    @wl9739788 #1 原来是这么简单的问题。真是太感谢了。这是不是 ID 冲突导致的问题?
    Eateeer
        4
    Eateeer  
       2017-12-18 00:44:57 +08:00   ❤️ 4
    @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
        5
    yeelone  
    OP
       2017-12-18 09:24:54 +08:00 via iPhone
    @wl9739788 非常感谢你的回答,这下我就明白了
    gonethen
        6
    gonethen  
       2017-12-18 17:58:41 +08:00
    我也想学 kotlin 开发安卓,求大神带
    youngxhui
        7
    youngxhui  
       2017-12-18 22:12:17 +08:00 via Android
    这个应该不是 kotlin 的锅吧
    yeelone
        8
    yeelone  
    OP
       2017-12-18 22:17:32 +08:00
    @youngxhui #7 没人说是 kotlin 的锅吧?
    youngxhui
        9
    youngxhui  
       2017-12-18 22:30:50 +08:00 via Android
    @yeelone 好像也是😂
    kwanzaa
        10
    kwanzaa  
       2017-12-19 18:59:14 +08:00
    @gonethen 官方有示例
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1011 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 19:30 · PVG 03:30 · LAX 12:30 · JFK 15:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.