如何解决导航点击处理程序的问题 - JETPACK - KOTLIN
我正在使用 JetPack 库的导航功能。
在导航图中包含两个片段。
必须通过单击 TitleFragment 中的按钮从 TitleFragment
导航到 GameFragment
。
我在 TitleFragment 里面做了如下操作来点击那个按钮:
binding.playButton.setOnClickListener {
Navigation.createNavigateOnClickListener(R.id.action_titleFragment_to_gameFragment)
//Navigation.findNavController(it).navigate(R.id.gameFragment)
}
其中 action_titleFragment_to_gameFragment
是操作 ID。
使用了 createNavigateOnClickListener
方法但它不起作用。而是评论第二行正在工作。
Navigation.createNavigateOnClickListener(R.id.action_titleFragment_to_gameFragment)
导航图内容如下:
<fragment
android:id="@+id/titleFragment"
android:name="com.example.android.navigation.TitleFragment"
android:label="fragment_title"
tools:layout="@layout/fragment_title" >
<action
android:id="@+id/action_titleFragment_to_gameFragment"
app:destination="@id/gameFragment" />
</fragment>
<fragment
android:id="@+id/gameFragment"
android:name="com.example.android.navigation.GameFragment"
android:label="fragment_game"
tools:layout="@layout/fragment_game" />
解决方法
您可以通过以下两种模式在 android 中的视图上设置点击监听器,
- 通过传递实现
View.OnClickListener
的类的实例,您可以在其中覆盖OnClick
方法 - 由于
View.OnClickListener
是 SAM,您可以传递lambda
而不是实现View.OnClickListener
接口。
button.setOnClickListener{ ... }
需要一个 lambda,而 button.setOnClickListener( ... )
需要一个 View.OnClickListener
的实例。
因此,在您的情况下,由于 Navigation.createNavigateOnClickListener
返回 View.OnClickListener
类型的对象,因此使用 round brackets - ()
而 not curly brackets - {}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。