android - 底部导航栏的 onItemSelectedListener
问题描述
我是 android 和 Kotlin 的新手,使用 onitemselectedListener 开发底部导航栏,因为不推荐使用 setOnNavigationItemSelectedListener,而且我找不到任何解释如何将 onitemselectedlistener 用于导航栏的 youtube 教程。导航显示在模拟器上,但是当我单击导航图标时没有显示片段。这是我的代码。
添加activity_main的图像和 模拟器错误图像
fragmentWord 图像,连接到“A”的第一个图标但不显示
主要活动
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.fragment.app.Fragment
import com.aryanvedh.vocabapp2.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val wordFragment = WordFragment()
val memorisedFragment = MemorisedFragment()
setCurrentFragment(wordFragment)
binding.bottomNavigationView.setOnItemSelectedListener { item ->
when (item.itemId) {
R.id.words -> setCurrentFragment(wordFragment)
R.id.memorised -> setCurrentFragment(memorisedFragment)
}
true
}
}
private fun setCurrentFragment(fragment: Fragment) =
supportFragmentManager.beginTransaction().apply {
replace(R.id.flFragment, fragment)
commit()
}
}```
any help? thanks
解决方案
OnNavigationItemSelectedListener
在底部导航中选择项目后,您需要使用方法来捕获。
这是文档中附加的示例代码。
BottomNavigationView.OnNavigationItemSelectedListener { item ->
when(item.itemId) {
R.id.item1 -> {
// Respond to navigation item 1 click
true
}
R.id.item2 -> {
// Respond to navigation item 2 click
true
}
else -> false
}
}
有关 BottomNavigationView 的更多信息,请参阅官方文档。
推荐阅读
- python - 有没有什么方法可以批量更新 DynamoDB 项目而不用 Python 覆盖(不是 put_item,它会覆盖)?
- android - 如何在 Kotlin for Android 中获取 GoogleCredentials?
- java - 使用 EXCEPTION.class 时自定义异常类不起作用
- docker - 错误:无法连接到 unix:///var/run/docker.sock 上的 Docker 守护程序。docker 守护进程是否正在运行
- flutter - 如何删除inappupdate屏幕上的关闭图标
- prolog - Prolog:如何获得输出的数量?
- sql - 在使用 Sequelize 的 Postgres 查询中包含多对多连接表的一对多关系
- can-bus - 所有 CANopen 索引都必须至少有一个子索引吗?
- android - Android XYPlot 图形底部标签大小变化?
- sql - 在 H2 上使用 CTE 查询未找到列