Ваши графики определены в вашей родительской активности, и именно там вы сможете их контролировать.
На самом деле ваш первый путь - это решение.Ваши графики определены в вашей деятельности.Когда вы находитесь внутри пунктов назначения внутри вашего графа A (скажем, A1, A2 и т. Д.), Они не знают о других ваших графах B & C. Единственный способ добраться до графа - через родительскую активность, и, следовательно,
requireActivity().bottomBar.selectedItemId = R.id.graph_b
Второй способ, который вы попробовали, определенно не будет работать, потому что findNavController().navigate(R.id.graph_b)
используется, когда у вас есть вложенная навигация.Другими словами graph_b
должно быть внутри graph_a
, что не относится к вашему случаю.
Сказав, что вы можете сделать, просто напишите
requireActivity().bottomBar.selectedItemId = R.id.graph_b
любитель.Вместо того, чтобы бегать внутри своих фрагментов, лучше бегать внутри вашей деятельности.
// In your fragment
requireActivity?.moveToGraphB()
// and in your activity
fun moveToGraphB() {
bottomBar.selectedItemId = R.id.graph_b
}
Или, если бы вы были более любопытны, вы бы использовали SharedViewModel
, что я не считаю необходимым.