我在主活动中定义了具有3个片段的底部导航栏。在其中一个片段中,我想通过单击日历视图(screen 1)下的回收者视图中的项目来打开一些片段。当我单击它时,将打开一个带有底部导航栏(screen 2)的新片段。如何在底部导航栏在架构上正确显示的情况下打开此新片段?
class ScheduleFragment : Fragment(), EventCardAdapter.OnEventClickListener{
private lateinit var calendarView: CalendarView
private lateinit var recyclerView: RecyclerView
private lateinit var viewAdapter: EventCardAdapter
private lateinit var viewManager: RecyclerView.LayoutManager
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.schedule_fragment, container, false)
viewManager = LinearLayoutManager(context)
viewAdapter = EventCardAdapter(events, this)
recyclerView = view.findViewById(R.id.events_recycler_view)
return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
calendarView = view.findViewById(R.id.schedule_view)
calendarView.setOnDateChangeListener { _, year, month, dayOfMonth ->
Toast.makeText(
context,
"$dayOfMonth/$month/$year",
Toast.LENGTH_LONG
).show()
}
recyclerView.apply {
setHasFixedSize(true)
layoutManager = viewManager
adapter = viewAdapter
}
}
// moving to fragment by clicking item in recycler
override fun onEventClick(view: View, position: Int) {
view.findNavController().navigate(R.id.action_scheduleFragment_to_attendanceEntryFragment)
}
}
答案 0 :(得分:0)
在目标上的托管活动实现上,更改了侦听器回调,然后当目标ID等于您要在其上显示导航栏的片段之一时,将导航栏可见性设置为可见,否则将其设置为消失
navController.addOnDestinationChangedListener{}