如何从底部导航栏片段中打开一些片段

时间:2020-04-18 14:50:40

标签: android android-fragments bottomnavigationview

我在主活动中定义了具有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)
    }

}

1 个答案:

答案 0 :(得分:0)

在目标上的托管活动实现上,更改了侦听器回调,然后当目标ID等于您要在其上显示导航栏的片段之一时,将导航栏可见性设置为可见,否则将其设置为消失

navController.addOnDestinationChangedListener{}