我在适配器中编写了以下代码。
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)
}