Заменить нижний вид навигации фрагментом

#android #android-fragments

#Android #android-фрагменты

Вопрос:

У меня есть MainActivity с BottomNavigationView следующим образом:

 class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val navView: BottomNavigationView = findViewById(R.id.nav_view)
        val navController = findNavController(R.id.nav_host_fragment)
        navView.setupWithNavController(navController)
    }
}
 

Кроме того, у меня есть кнопка настройки в верхней части навигационного представления. При нажатии этой кнопки я хочу, чтобы фрагмент настройки отображался поверх фрагмента навигации, скрывал его и отображал настройку в полноэкранном режиме.

Что-то вроде этого:

 val settingsFragment = SettingFragment.newInstance()
val fragmentTransaction = supportFragmentManager.beginTransaction()
fragmentTransaction.addToBackStack(null)
fragmentTransaction.replace(/*what to user here*/, settings)
fragmentTransaction.commit()
 

Ответ №1:

Вот решение:

 val navHostFragment
        = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
navHostFragment.childFragmentManager
        .beginTransaction()
        .replace(navHostFragment.id, SettingsFragment())
        .addToBackStack(null)
        .commit()