底部导航栏的 onItemSelectedListener

Posted

技术标签:

【中文标题】底部导航栏的 onItemSelectedListener【英文标题】:onItemSelectedListener for bottomnavigationbar 【发布时间】:2021-10-01 13:40:15 【问题描述】:

我是 android 和 Kotlin 的新手,使用 onitemselectedListener 开发底部导航栏,因为不推荐使用 setOnNavigationItemSelectedListener,而且我找不到任何解释如何将 onitemselectedlistener 用于导航栏的 youtube 教程。导航显示在模拟器上,但是当我单击导航图标时没有显示片段。这是我的代码。

添加activity_main和emulator error image的图片

fragmentWord image, that is connected to the first icon of "A" but doesn't show up

主活动

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 

【问题讨论】:

【参考方案1】:

在底部导航中选择项目后,您需要使用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
    

请refer官方文档了解有关BottomNavigationView的更多信息。

【讨论】:

谢谢@Saikiran,我尝试了你的建议,但也没有用。仍然得到同样的错误。 OnNavigationItemSelectedListener 已弃用,因此我无法使用它,我的搜索建议使用 setOnItemSelectedListener ,这是我试图弄清楚它应该如何工作的方法。谢谢

以上是关于底部导航栏的 onItemSelectedListener的主要内容,如果未能解决你的问题,请参考以下文章

底部导航栏的表现形式

Android应用-底部导航栏的使用

iOS 7:在底部导航栏的表格视图之间滑动

将底部导航栏的代码与脚手架分离

使用底部导航时删除应用栏的后退按钮 - 颤动

想要在flutter中通过底部导航栏的总价