В Android Studio я запустил новый проект с «BottomNavigationView», и теперь, когда я запускаю приложение в эмуляторе, домашний фрагмент находится там по умолчанию, но затем никогда не заменяется при переключении на другой фрагмент. Вместо этого новые фрагменты заменяют друг друга, оставаясь при этом поверх первого фрагмента. Таким образом, если у меня было 3 фрагмента, фрагмент 1 остается в активности, в то время как фрагмент 1 (дубликат), фрагмент 2 и фрагмент 3 заменяют друг друга поверх фрагмента 1 (оригинал). Я не знаю, как избавиться от оригинального фрагмента или откуда он вообще исходит. Я новичок в Android разработке и обучении Kotlin, поэтому я изо всех сил пытаюсь найти предложения в Kotlin. Вот код в моей MainActivity:
package com.example.android.pointmax
import android.os.Bundle
import com.google.android.material.bottomnavigation.BottomNavigationView
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController
import com.example.android.pointmax.ui.home.HomeFragment
import com.example.android.pointmax.ui.recommended.RecommendedFragment
import com.example.android.pointmax.ui.wallet.WalletFragment
import timber.log.Timber
class MainActivity : AppCompatActivity() {
private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.navigation_home-> {
val fragment = HomeFragment.newInstance()
replaceFragment(fragment)
return@OnNavigationItemSelectedListener true
}
R.id.navigation_wallet -> {
replaceFragment(WalletFragment())
return@OnNavigationItemSelectedListener true
}
R.id.navigation_recommended -> {
replaceFragment(RecommendedFragment())
return@OnNavigationItemSelectedListener true
}
}
false
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Plant tree to enable Debugging with Timber
Timber.plant(Timber.DebugTree())
// Find the bottomNavigation bar
val navView: BottomNavigationView = findViewById(R.id.nav_view)
// Find the fragment that will host the different fragments
val navController = findNavController(R.id.nav_host_fragment)
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
val appBarConfiguration = AppBarConfiguration(setOf(
R.id.navigation_home, R.id.navigation_wallet, R.id.navigation_recommended))
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
// Set click listeners to respond to bottom navigation selections
navView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
}
private fun replaceFragment(fragment: Fragment) {
supportFragmentManager.beginTransaction()
.replace(R.id.nav_host_fragment,fragment)
.commit()
}
}
MainActivity. xml - это то, как он создается по умолчанию, с constraintLayout, с bottomNavigationView и nav_host_fragment, вложенными внизу. Я очень ценю любую помощь. Заранее спасибо.