gpt4 book ai didi

android - 我如何重构抽屉导航

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

我想重构这部分代码,因为你可以看到有很多函数重复

override fun onNavigationItemSelected(menuItem: MenuItem): Boolean {
when (menuItem.itemId) {

R.id.home -> {
homeFragment = HomeFragment()
supportFragmentManager
.beginTransaction()
.replace(R.id.frame_layout, homeFragment)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit()
}

R.id.loanable -> {
loanableFragment = LoanableFragment()
supportFragmentManager
.beginTransaction()
.replace(R.id.frame_layout, loanableFragment)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit()
}

R.id.payable -> {
payableFragment = PayableFragment()
supportFragmentManager
.beginTransaction()
.replace(R.id.frame_layout, payableFragment)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit()
}

R.id.compare_rate -> {
compareRateFragment = CompareRateFragment()
supportFragmentManager
.beginTransaction()
.replace(R.id.frame_layout, compareRateFragment)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit()
}
}

drawerLayout.closeDrawer(GravityCompat.START)
return true
}

最佳答案

您可以使用kotlin扩展功能让您的代码更加清晰。

fun Fragment.replace() {
supportFragmentManager
.beginTransaction()
.replace(R.id.frame_layout, this)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit()
}

override fun onNavigationItemSelected(menuItem: MenuItem): Boolean {
when (menuItem.itemId) {
R.id.home -> HomeFragment().replace()
R.id.loanable -> LoanableFragment().replace()
R.id.payable -> PayableFragment().replace()
R.id.compare_rate -> CompareRateFragment().replace()
}
drawerLayout.closeDrawer(GravityCompat.START)
return true
}

如果您的 fragment 容器 ID 不同:

infix fun Fragment.replaceTo(id: Int) {
supportFragmentManager
.beginTransaction()
.replace(id, this)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit()
}

override fun onNavigationItemSelected(menuItem: MenuItem): Boolean {
when (menuItem.itemId) {
R.id.home -> HomeFragment() replaceTo R.id.frame_layout1
R.id.loanable -> LoanableFragment() replaceTo R.id.frame_layout2
R.id.payable -> PayableFragment() replaceTo R.id.frame_layout3
R.id.compare_rate -> CompareRateFragment() replaceTo R.id.frame_layout4
}
drawerLayout.closeDrawer(GravityCompat.START)
return true
}

关于android - 我如何重构抽屉导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56680807/

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