Miałeś na myśli, że zmienia na label który mamy zdefiniowany w pliku z nawigacją?
<fragment
android:id="@+id/homeFragment"
android:name="com.example.HomeFragment"
android:label="Home"
tools:layout="@layout/fragment_home" >
Jeśli tak to mam to obsłużone robie to tak:
navHostFragment?.navController?.addOnDestinationChangedListener { _, destination, _ ->
binding.homeToolbar.title = getString(R.string.app_name) + " " + destination.label!!
}
Jeszcze raz wytłumaczę o co mi chodzi. W jednym fragmencie wybieram item z listy i przechodzę do drugiego fragmentu. W drugim fragmencie W toolbarze chcę wyświetlić nazwę tego itemu. Nazwę mam już przesłaną za pomocą bundle'a. Chcę teraz tylko wyswietlić tę nazwę
dodana zawartość
class MainFragment : Fragment() {
private lateinit var binding: FragmentMainBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
binding = FragmentMainBinding.inflate(inflater)
val navHostFragment = childFragmentManager.findFragmentById(R.id.fragmentHost) as NavHostFragment?
navHostFragment?.navController?.addOnDestinationChangedListener { _, destination, _ ->
when(destination.id) {
R.id.chatFragment,
-> {
binding.bottomNavigationView.visibility = View.GONE
binding.homeToolbar.visibility = View.GONE
}
else
-> {
binding.bottomNavigationView.visibility = View.VISIBLE
binding.homeToolbar.visibility = View.VISIBLE
}
}
}
if (navHostFragment != null) {
NavigationUI.setupWithNavController(
binding.bottomNavigationView,
navHostFragment.navController
)
}
navHostFragment?.navController?.addOnDestinationChangedListener { _, destination, _ ->
binding.homeToolbar.title = getString(R.string.app_name) + " " + destination.label!!
}
return binding.root
}
/**
* Sets bottomNavView as NavController
*/
private fun setNavController(){
val navController = Navigation.findNavController(requireActivity(),
R.id.fragmentHost)
bottomNavigationView.setupWithNavController(navController)
homeToolbar.setupWithNavController(navController)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setNavController()
}
}
Tak wygląda klasa fragmentu, który hostuje inne.