导航点击处理程序问题 - JETPACK - KOTLIN
Issue with the Navigation Click Handler - 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 中的视图上设置点击监听器,
- 通过传递 class 实现
View.OnClickListener
的实例,您可以在其中重写 OnClick
方法
- 由于
View.OnClickListener
是 SAM,您可以传递 lambda
而不是实现 View.OnClickListener
接口。
button.setOnClickListener{ ... }
需要一个 lambda,button.setOnClickListener( ... )
需要一个 View.OnClickListener
.
的实例
所以在你的情况下,因为 Navigation.createNavigateOnClickListener
returns 类型的对象 View.OnClickListener
使用 round brackets - ()
而 不 curly brackets - {}
我正在使用 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 中的视图上设置点击监听器,
- 通过传递 class 实现
View.OnClickListener
的实例,您可以在其中重写OnClick
方法 - 由于
View.OnClickListener
是 SAM,您可以传递lambda
而不是实现View.OnClickListener
接口。
button.setOnClickListener{ ... }
需要一个 lambda,button.setOnClickListener( ... )
需要一个 View.OnClickListener
.
所以在你的情况下,因为 Navigation.createNavigateOnClickListener
returns 类型的对象 View.OnClickListener
使用 round brackets - ()
而 不 curly brackets - {}