我在适配器中编写了以下代码。

holder.itemView.setOnClickListener {
    val action = SearchFragmentDirections.actionSearchFragmentToArtistFragment(artist.id)
    Navigation.createNavigateOnClickListener(action)
}

这是可能的导航xml:
 ...
    <fragment android:id="@+id/searchFragment"
          android:name="com.salmanseifian.spotiny.ui.search.SearchFragment"
          android:label="SearchFragment">

    <action android:id="@+id/action_searchFragment_to_artistFragment"
            app:destination="@id/artistFragment"
            app:popUpTo="@+id/searchFragment"/>
</fragment>

但这是行不通的。有人可以帮忙吗?

最佳答案

您正在使用lambda本身就是一个点击监听器。
使用导航ID和createNavigationListener来检查此Navigation Docs是否具有点击监听器的正确实现。

针对您的情况使用以下代码。

holder.itemView.setOnClickListener(
Navigation.createNavigateOnClickListener(R.id.action_searchFragment_to_artistFragment)
)

或者,尝试这种方式
holder.itemView.setOnClickListener{ view ->
 view.findNavController().navigate(R.id.action_searchFragment_to_artistFragment)
}

10-04 23:10
查看更多