如何根据选定的项目加载BottomNavigationView片段?

我有一个简单的应用程序写在Kotlin有一个BottomNavigationView。 这个想法是有一个单一的活动(MainActivity)与BottomNavigationView的每个选项卡加载片段。

我已经创建了一个片段,当选择一个选项卡(HomeFragment)时,我想加载一个片段,并且当活动选项卡更改时,已经在BottomNavigationView的图标下更改了文本。

现在我想在改变标签时膨胀/加载片段。 我怎么去做这个?

MainActivity.kt:

class MainActivity : AppCompatActivity() { private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item -> when (item.itemId) { R.id.navigation_enrollments -> { message.setText(R.string.title_enrollments) return@OnNavigationItemSelectedListener true } R.id.navigation_timeline -> { message.setText(R.string.title_timeline) return@OnNavigationItemSelectedListener true } R.id.navigation_home -> { message.setText(R.string.title_home) return@OnNavigationItemSelectedListener true } R.id.navigation_alerts -> { message.setText(R.string.title_alerts) return@OnNavigationItemSelectedListener true } R.id.navigation_profile -> { message.setText(R.string.title_profile) return@OnNavigationItemSelectedListener true } } false } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener) } override fun onResume() { super.onResume() setContentView(R.layout.activity_main) val bottomNavigationView = findViewById(R.id.navigation) bottomNavigationView.selectedItemId = R.id.navigation_home } } 

One Solution collect form web for “如何根据选定的项目加载BottomNavigationView片段?”

而不是message.setText(R.string.title_enrollments)

 supportFragmentManager.beginTransaction() .replace(containerViewId, fragmentInstance, "TAG") .commitAllowingStateLoss() 

或者,您可以使用我在代码中使用的扩展function,使其更清洁。 只要在一些.kt文件中添加这个

 inline fun FragmentManager.transactStateless(func: FragmentTransaction.() -> Unit) { val transaction = beginTransaction() transaction.func() transaction.commitAllowingStateLoss() } 

现在你可以这样添加删除片段:

 supportFragmentManager.transactStateless { replace(containerViewId, fragmentInstance, "TAG") } 
  • 部分函数在Kotlin中的应用
  • Kotlin在TreeMap上进行排序
  • Kotlin启动应用程序崩溃
  • 如何比较类和接口?
  • 我可以在没有Kotlin的情况下运行Android Studio 3.0吗?
  • Kotlin和Android Databinding
  • 如何在android中的kotlin读取和写入txt文件
  • Kotlin:你可以用varargs命名参数吗?
  • 如何注入瞬间依赖工厂与Kodein?
  • 通过kotlin传递的parcelable数组正在发射最后一个项目
  • IntelliJ不排序Kotlin进口
  • Kotlin language will be the best programming language for Android.