将设置页从“基础设置 / 高级设置”扩展为“基础设置 / 一卡通设置 / 高级设置”三段标签;新增独立一卡通设置页管理 WebService 服务器地址和 AppID,并从基础设置中移除原入口。迁移后必须继续使用既有 MMKV 配置键和默认值,不安装 APK,不执行任何 Git 写操作。
SettingActivity.java:按基础、一卡通、高级的顺序注册三个 Fragment,并让标签位置统一驱动不可滑动的 ViewPager。SettingTab.java、setting_tab_layout.xml:增加中间标签;用 POSITION_BASIC、POSITION_ONECARD、POSITION_SENIOR 表达三个位置,并用数组统一维护选中/未选中背景。SetOnecardFragment.java、set_onecard_fragment_layout.xml:独立展示、校验和保存服务器地址及 AppID;基础设置页已无一卡通地址或 AppID 入口引用。ValidatedSettingInputPop.java:复用现有输入弹窗布局,允许业务层注入输入类型、校验器和完成回调。setting_middle_normal.xml、setting_middle_selected.xml:提供三段标签中间态背景;上下标签边框宽度同步改用同一尺寸资源。strings.xml、dimens.xml:集中维护标签、输入提示、错误提示、分组内边距、分隔线和标签边框等资源。Constants.java、OnecardSettings.java:集中维护 MMKV 键、默认值和输入校验规则,供设置页与消费模块共同读取。http 或 https 且路径以 .asmx 结尾;AppID 仅接受大于 0 的整数。setting_onecard_server_url(Constants.SETTING_ONECARD_SERVER_URL)。setting_onecard_app_id(Constants.SETTING_ONECARD_APP_ID)。http://10.128.1.19/WebService/Newcapec.eCard.ProxyWebService.asmx。6。SetOnecardFragment.onDestroyView() 解除两个设置项的点击监听并清空 View 引用。SettingTab 的位置数字只出现在 POSITION_* 语义常量中;页面顺序与位置常量的约束有说明注释。0dp 仅用于 layout_weight 标准分配,权重 1 和总权重 3 表达三等分结构,不是业务尺寸。dimens.xml;中间背景及上下背景边框宽度均引用 setting_tab_stroke_width。SettingTab、SetOnecardFragment、ValidatedSettingInputPop 均有职责/边界注释;Fragment 的销毁期处理和配置兼容原因有就地注释。0 属于平台约定,不属于可资源化尺寸。/Users/liang/Library/Java/JavaVirtualMachines/corretto-1.8.0_482/Contents/Home(Corretto 1.8.0_482)。JAVA_HOME=/Users/liang/Library/Java/JavaVirtualMachines/corretto-1.8.0_482/Contents/Home bash ./gradlew :app:testDebugUnitTest。BUILD SUCCESSFUL in 8s;测试报告汇总为 71 个测试、0 failure、0 error、0 skipped。JAVA_HOME=/Users/liang/Library/Java/JavaVirtualMachines/corretto-1.8.0_482/Contents/Home bash ./gradlew :app:assembleDebug。BUILD SUCCESSFUL in 13s。/Users/liang/AndroidStudioProjects/ZhctTrayBindingMachine/app/build/outputs/apk/debug/app-debug.apk。git diff --check 首轮检查:通过,无输出,退出码 0。git diff --check 复查:通过,无输出,退出码 0。git status --short;源码工作区包含本功能及同一工作区内其他未提交改动,本记录不将工作区描述为干净。git add、git commit、git push、分支切换或创建、合并、变基、重置、清理等 Git 写操作。