You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询Kotlin中两段OnClickListener点击回调代码的差异

两段代码的核心差异

第一段代码完全无法触发导航操作,第二段才是实现导航点击的正确写法,具体差异如下:

  • 第一段使用setOnClickListener的lambda重载,lambda内部仅创建了一个OnClickListener实例(由Navigation.createNavigateOnClickListener返回),但没有调用该实例的onClick方法——所以点击tarSign时不会产生任何导航行为。

    tarSign.setOnClickListener {
        // 仅创建导航Listener对象,未执行点击逻辑
        Navigation.createNavigateOnClickListener(
            R.id.action_listFragment_to_detailFragment,
            fragmentBundle
        )
    }
    
  • 第二段直接将Navigation.createNavigateOnClickListener返回的OnClickListener实例传递给setOnClickListener,这是方法的正确用法:当点击starSign时,系统会自动调用该Listener的onClick方法,从而触发导航操作。

    starSign.setOnClickListener(
        Navigation.createNavigateOnClickListener(
            R.id.action_listFragment_to_detailFragment,
            fragmentBundle
        )
    )
    

简单总结:第一段是“点击按钮时创建一个导航Listener但不使用它”,第二段是“把导航Listener直接绑定给按钮,点击时自动执行导航逻辑”。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 00:47:34