gpt4 book ai didi

android - 如何在 Kotlin 中设置默认的 BottomNavigationView 选项卡?

转载 作者:搜寻专家 更新时间:2023-11-01 08:25:31 25 4
gpt4 key购买 nike

我一直在尝试在我的 onCreate (bottomNavigationView.setSelectedItemId(R.id.item_id)) 中使用广泛接受的 java 方法来设置我的默认选择选项卡,但这在 Kotlin 中似乎不起作用。此外,设置为在每个选定项目上加载的 fragment 似乎在每次选择该菜单项时加载,以及在前一个 fragment 上绘制它们的内容。

如何为我的 BottomNavigationView 设置默认选择的选项卡?另外,我是否正确加载了 fragment ,或者我的代码在加载另一个 fragment 之前没有正确处理 fragment ?

主要 Activity .kt

class MainActivity : AppCompatActivity() {
private val SELECTED_ITEM = "arg_selected_item"

private var mBottomNav: BottomNavigationView? = null
private var mSelectedItem: Int = 0

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

mBottomNav = findViewById(R.id.navigation) as BottomNavigationView
mBottomNav!!.setOnNavigationItemSelectedListener { item ->
selectFragment(item)
true
}

val selectedItem: MenuItem
if (savedInstanceState != null) {
mSelectedItem = savedInstanceState.getInt(SELECTED_ITEM, 0)
selectedItem = mBottomNav!!.menu.findItem(mSelectedItem)
} else {
selectedItem = mBottomNav!!.menu.getItem(0)
}
selectFragment(selectedItem)
}

override fun onSaveInstanceState(outState: Bundle) {
outState.putInt(SELECTED_ITEM, mSelectedItem)
super.onSaveInstanceState(outState)
}

override fun onBackPressed() {
val homeItem = mBottomNav!!.menu.getItem(0)
if (mSelectedItem != homeItem.itemId) {
// select home item
selectFragment(homeItem)
} else {
super.onBackPressed()
}
}

private fun selectFragment(item: MenuItem) {
var frag: Fragment? = null
// init corresponding fragment
when (item.itemId) {
R.id.navigation_enrollments -> frag = EnrollmentsFragment.newInstance()
R.id.navigation_timeline -> frag = TimelineFragment.newInstance()
R.id.navigation_home -> frag = HomeFragment.newInstance()
R.id.navigation_alerts -> frag = AlertsFragment.newInstance()
R.id.navigation_profile -> frag = ProfileFragment.newInstance()
}

// update selected item
mSelectedItem = item.itemId

// uncheck the other items.
for (i in 0..mBottomNav!!.menu.size() - 1) {
val menuItem = mBottomNav!!.menu.getItem(i)
menuItem.isChecked = menuItem.itemId == item.itemId
}

updateToolbarText(item.title)

if (frag != null) {
val ft = supportFragmentManager.beginTransaction()
ft.add(R.id.content, frag, frag.tag)
ft.commit()
}
}

private fun updateToolbarText(text: CharSequence) {
val actionBar = supportActionBar
if (actionBar != null) {
actionBar.title = text
}
}

private fun getColorFromRes(@ColorRes resId: Int): Int {
return ContextCompat.getColor(this, resId)
}
}

最佳答案

通过将以下代码添加到我的 onCreate 函数解决了默认选择的选项卡问题:

    val bottomNavigationView: BottomNavigationView = findViewById(R.id.navigation) as BottomNavigationView
bottomNavigationView.selectedItemId = R.id.navigation_home

此外,我通过修改以下内容解决了 fragment 被绘制在彼此之上的问题:

if (frag != null) {
val ft = supportFragmentManager.beginTransaction()
ft.replace(R.id.content, frag, frag.tag)
ft.commit()
}
}

我将 ft.add 更改为 ft.replace

关于android - 如何在 Kotlin 中设置默认的 BottomNavigationView 选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45686090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com