*
This commit is contained in:
41
app/src/main/kotlin/com/stec/cmd/FeatureMount.kt
Normal file
41
app/src/main/kotlin/com/stec/cmd/FeatureMount.kt
Normal file
@@ -0,0 +1,41 @@
|
||||
package com.stec.cmd
|
||||
|
||||
/**
|
||||
* 底部导航 5 Tab 与业务模块(功能明细表编号)的挂载点注册中心。
|
||||
*
|
||||
* S1+ 挂载业务页面的方式:把对应 [MountItem.fragmentClass] 从占位 Fragment
|
||||
* 换成业务 Fragment 即可,导航壳(MainActivity)零改动;新增 Tab 时扩展 [Tab]。
|
||||
* 挂载映射依据《安卓客户端功能明细表》:
|
||||
* 首页=M2、任务=M3、采集=M4+M5、统计=M6、我的=M1。
|
||||
*/
|
||||
object FeatureMount {
|
||||
|
||||
/** 底部导航 Tab(itemId 与 res/menu/bottom_nav_menu.xml 一一对应)。 */
|
||||
enum class Tab(val itemId: Int, val labelRes: Int) {
|
||||
HOME(R.id.nav_home, R.string.tab_home),
|
||||
TASK(R.id.nav_task, R.string.tab_task),
|
||||
COLLECT(R.id.nav_collect, R.string.tab_collect),
|
||||
STATS(R.id.nav_stats, R.string.tab_stats),
|
||||
MINE(R.id.nav_mine, R.string.tab_mine),
|
||||
}
|
||||
|
||||
/** 单个 Tab 的挂载项。 */
|
||||
data class MountItem(
|
||||
val tab: Tab,
|
||||
val fragmentClass: Class<out androidx.fragment.app.Fragment>,
|
||||
val moduleTag: String,
|
||||
)
|
||||
|
||||
/** 挂载注册表:S1+ 替换 fragmentClass 即完成业务页挂载。 */
|
||||
val mounts: List<MountItem> = listOf(
|
||||
MountItem(Tab.HOME, HomeFragment::class.java, "M2 项目工作台"),
|
||||
MountItem(Tab.TASK, TaskFragment::class.java, "M3 任务管理"),
|
||||
MountItem(Tab.COLLECT, CollectFragment::class.java, "M4+M5 数据采集"),
|
||||
MountItem(Tab.STATS, StatsFragment::class.java, "M6 统计与上传"),
|
||||
MountItem(Tab.MINE, MineFragment::class.java, "M1 我的"),
|
||||
)
|
||||
|
||||
/** 按 menu itemId 取挂载项;未知 id 返回 null(容错)。 */
|
||||
fun byItemId(itemId: Int): MountItem? =
|
||||
mounts.firstOrNull { it.tab.itemId == itemId }
|
||||
}
|
||||
Reference in New Issue
Block a user