This commit is contained in:
阿猫
2026-09-03 12:38:16 +08:00
parent 09669fe4a2
commit e96e92d7ab
68 changed files with 2810 additions and 0 deletions

View 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 {
/** 底部导航 TabitemId 与 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 }
}