Как включить отображение от края до края только для определенного фрагмента в Android с нижней навигацией?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как включить отображение от края до края только для определенного фрагмента в Android с нижней навигацией?

Сообщение Anonymous »

Я работаю над приложением для Android, действие которого содержит нижнюю панель навигации и три фрагмента. Я хочу, чтобы мой HomeFragment имел отображение от края до края, но когда я включаю режим от края до края в своей базовой активности, это влияет на все фрагменты, а это не то, что мне нужно.
Вот что я пробовал на данный момент:
  • Базовая активность в режиме Edge-to-Edge:
    • Включение сквозного режима в базовом действии обеспечивает сквозное соединение всех фрагментов.
      < /li>
      Пример: HomeFragment с от края до края
  • Проблема в других фрагментах:
    • Другие фрагменты также наследуют Edge- режим до края, который мне не нужен.
    • Пример: нежелательный режим «от края до края» в другом фрагменте
    Это мой код базовой активности:

    Код: Выделить всё

    @AndroidEntryPoint
    class SimActivity : AppCompatActivity() {
    
    private val binding by lazy {
    ActivitySimBinding.inflate(layoutInflater)
    }
    
    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(binding.root)
    enableEdgeToEdge()
    setupBottomNavs()
    
    }
    
    private fun setupBottomNavs(){
    binding.bottomNav.selectedItemId = R.id.homeFragment // Set the default selected item to home
    setFragment(HomeFragment())
    binding.bottomNav.setOnItemSelectedListener(object : NavigationBarView.OnItemSelectedListener {
    override fun onNavigationItemSelected(newTab: MenuItem): Boolean {
    when (newTab.itemId) {
    R.id.homeFragment -> {
    switchFragment(HomeFragment())
    return true
    }
    R.id.ordersFragment -> {
    switchFragment(OrdersFragment())
    return true
    }
    R.id.saleFragment -> {
    switchFragment(SaleFragment())
    return true
    }
    }
    return false
    }
    })
    }
    
    private fun setFragment(homeFragment: HomeFragment) {
    supportFragmentManager
    .beginTransaction()
    .add(R.id.frameLayout,homeFragment) // Add this line
    .commitNow()
    }
    
    private fun switchFragment(fragment: Fragment) {
    val transaction = supportFragmentManager.beginTransaction()
    for (existingFragment in supportFragmentManager.fragments) {
    transaction.hide(existingFragment)
    }
    var showFragment = supportFragmentManager.findFragmentByTag(fragment.javaClass.simpleName)
    if (showFragment == null) {
    showFragment = fragment
    transaction.add(R.id.frameLayout, showFragment, fragment.javaClass.simpleName)
    } else {
    transaction.show(showFragment)
    }
    transaction.commitAllowingStateLoss()
    
    }
    
    }
    
Моя цель — включить сквозной режим только тогда, когда HomeFragment активен и имеет строку состояния по умолчанию. поведение для других фрагментов. Как я могу добиться этого выборочно?

Подробнее здесь: https://stackoverflow.com/questions/787 ... id-with-bo
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»