如何根据所选项目在BottomNavigationView上加载片段?

时间:2017-08-10 19:34:08

标签: android android-fragments kotlin 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<BottomNavigationView>(R.id.navigation)
        bottomNavigationView.selectedItemId = R.id.navigation_home
    }
}

1 个答案:

答案 0 :(得分:0)

而不是docker run -v d:/data:/data alpine ls /data

message.setText(R.string.title_enrollments)

或者您可以使用我在代码中使用的扩展功能来使其更清晰。只需将其添加到某个supportFragmentManager.beginTransaction() .replace(containerViewId, fragmentInstance, "TAG") .commitAllowingStateLoss() 文件

中即可
.kt

现在您可以通过以下方式添加删除片段:

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