导航点击处理程序的问题- JETPACK - KOTLIN



我正在使用JetPack库的导航功能。

在导航图中包含两个片段。

必须从TitleFragment导航到GameFragment与点击按钮,这是在TitleFragment。

我在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视图中设置clicklistener

  • 通过传递一个实现View.OnClickListener的类的实例来覆盖OnClick方法
  • 由于View.OnClickListener是SAM,您可以传递lambda而不是实现View.OnClickListener接口。

button.setOnClickListener{ ... }期望一个lambda,button.setOnClickListener( ... )期望一个View.OnClickListener的实例。

所以在你的情况下,因为Navigation.createNavigateOnClickListener返回类型为View.OnClickListener的对象使用round brackets - ()而不是curly brackets - {}

相关内容

  • 没有找到相关文章

最新更新