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

