Sal*_*ian 13 android kotlin android-recyclerview android-architecture-navigation
我在适配器中编写了以下代码。
holder.itemView.setOnClickListener {
val action = SearchFragmentDirections.actionSearchFragmentToArtistFragment(artist.id)
Navigation.createNavigateOnClickListener(action)
}
Run Code Online (Sandbox Code Playgroud)
这是可能的导航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>
Run Code Online (Sandbox Code Playgroud)
但它不会工作。有人可以帮忙吗?
Raj*_*shi 34
您正在使用 lambda,它本身就是一个点击侦听器。检查此导航文档,其中使用导航 id 和 createNavigationListener 正确实现了单击侦听器。
针对您的情况使用以下代码。
holder.itemView.setOnClickListener(
Navigation.createNavigateOnClickListener(R.id.action_searchFragment_to_artistFragment)
)
Run Code Online (Sandbox Code Playgroud)
或者,试试这种方式
holder.itemView.setOnClickListener{ view ->
view.findNavController().navigate(R.id.action_searchFragment_to_artistFragment)
}
Run Code Online (Sandbox Code Playgroud)
我认为最好将此添加到已接受的答案中:
holder.itemView.setOnClickListener(
Navigation
.createNavigateOnClickListener(R.id.action_searchFragment_to_artistFragment).onClick(holder.itemView)
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9529 次 |
| 最近记录: |