确认在导航图中正确设置了目的地和参数。
确认所使用的导航控制器是正确的。
确认在适配器中正确设置了导航项点击事件。
示例代码:
在 RecyclerView 的适配器中,通过导航控制器 NavController 实现导航。在 onCreateViewHolder 方法中,为视图绑定点击事件,并在 onClick 事件中获取目标位置的 ID ,使用 Bundle 设置参数,最后使用 NavController 将用户导向目标 Fragment。
class MyAdapter(private val navController: NavController, private val data: ArrayList) :
RecyclerView.Adapter() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.list_item, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(data[position])
holder.itemView.setOnClickListener {
val bundle = bundleOf("itemId" to position + 1)
navController.navigate(R.id.action_listFragment_to_detailFragment, bundle)
}
}
override fun getItemCount() = data.size
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(item: String) {
itemView.itemText.text = item
}
}
}