Android 中的底部导航仅适用于双击,
Bottom Navigation in Android works only on double clicks ,
创建一个应用程序,并通过设置 "On navigation selected listener" 实现底部导航,点击底部导航面板中的图标,我试图替换片段,片段确实被替换但双击.单击菜单项什么也不做。
这是我的代码
'''
class 主活动:AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// val toolbar=app_bar as androidx.appcompat.widget.Toolbar
//setSupportActionBar(toolbar)
val navigation = findViewById<View>(R.id.nav_view) as BottomNavigationView
navigation.setOnNavigationItemReselectedListener {
when (it.itemId) {
R.id.navigation_home -> {
var x = supportFragmentManager
var y = x.beginTransaction()
var fragment = HomeFragment()
y.replace(R.id.nav_host_fragment, fragment)
y.addToBackStack("123")
y.commit()
}
R.id.navigation_login -> {
var x = supportFragmentManager
var y = x.beginTransaction()
var fragment = LoginFragment()
y.replace(R.id.nav_host_fragment, fragment)
y.addToBackStack("456")
y.commit()
}
R.id.navigation_notifactory -> {
var x = supportFragmentManager
var y = x.beginTransaction()
var fragment = NotificationFragment()
y.replace(R.id.nav_host_fragment, fragment)
y.addToBackStack("789")
y.commit()
}
}
}
var x = supportFragmentManager
var y = x.beginTransaction()
val fragment=HomeFragment()
y.add(R.id.nav_host_fragment,fragment)
y.addToBackStack(null)
y.commit()
}
}
'''
替换为:
navigation.setOnNavigationItemReselectedListener {
作者:
navigation.setOnNavigationItemSelectedListener {
您正在使用 navigation.setOnNavigationItemReselectedListener。它是 select select 项目,而不是 select 项目。这就是您必须按两次才能 select 编辑项目的原因。删除它并设置 navigation.setOnNavigationItemSelectedListener
我的解决方法是,如果检查不正确我不采取行动
binding.bottomNav.setOnNavigationItemSelectedListener {
if (!binding.bottomNav.menu.findItem(it.itemId).isChecked) navController.navigate(it.itemId)
true
}
创建一个应用程序,并通过设置 "On navigation selected listener" 实现底部导航,点击底部导航面板中的图标,我试图替换片段,片段确实被替换但双击.单击菜单项什么也不做。 这是我的代码 '''
class 主活动:AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// val toolbar=app_bar as androidx.appcompat.widget.Toolbar
//setSupportActionBar(toolbar)
val navigation = findViewById<View>(R.id.nav_view) as BottomNavigationView
navigation.setOnNavigationItemReselectedListener {
when (it.itemId) {
R.id.navigation_home -> {
var x = supportFragmentManager
var y = x.beginTransaction()
var fragment = HomeFragment()
y.replace(R.id.nav_host_fragment, fragment)
y.addToBackStack("123")
y.commit()
}
R.id.navigation_login -> {
var x = supportFragmentManager
var y = x.beginTransaction()
var fragment = LoginFragment()
y.replace(R.id.nav_host_fragment, fragment)
y.addToBackStack("456")
y.commit()
}
R.id.navigation_notifactory -> {
var x = supportFragmentManager
var y = x.beginTransaction()
var fragment = NotificationFragment()
y.replace(R.id.nav_host_fragment, fragment)
y.addToBackStack("789")
y.commit()
}
}
}
var x = supportFragmentManager
var y = x.beginTransaction()
val fragment=HomeFragment()
y.add(R.id.nav_host_fragment,fragment)
y.addToBackStack(null)
y.commit()
}
}
'''
替换为:
navigation.setOnNavigationItemReselectedListener {
作者:
navigation.setOnNavigationItemSelectedListener {
您正在使用 navigation.setOnNavigationItemReselectedListener。它是 select select 项目,而不是 select 项目。这就是您必须按两次才能 select 编辑项目的原因。删除它并设置 navigation.setOnNavigationItemSelectedListener
我的解决方法是,如果检查不正确我不采取行动
binding.bottomNav.setOnNavigationItemSelectedListener {
if (!binding.bottomNav.menu.findItem(it.itemId).isChecked) navController.navigate(it.itemId)
true
}