diff --git a/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt b/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt index 7cadbcf..da08613 100644 --- a/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt @@ -155,8 +155,12 @@ class HomeFragment : BaseFragment() { // ===== 设置页 ===== - /** 绑定设置页 View 引用 */ + /** 保存 configPage 引用,用于直接填充数据 */ + private lateinit var configPageView: View + + /** 绑定设置页 View 引用并直接填充数据 */ private fun bindConfigViews(page: View) { + configPageView = page configStatusBar = page.findViewById(R.id.statusBar) tvAvatarLetter = page.findViewById(R.id.tvAvatarLetter) tvUserName = page.findViewById(R.id.tvUserName) @@ -168,7 +172,7 @@ class HomeFragment : BaseFragment() { } } - /** 初始化设置页数据 */ + /** 初始化设置页数据(直接用 inflate 好的 configPageView) */ private fun initConfigPage() { // 用户信息 val userName = userPrefs.userName @@ -182,28 +186,17 @@ class HomeFragment : BaseFragment() { mobile } - // 设备信息 - val configPage = (binding.viewPager.adapter as? HomePagerAdapter)?.let { return@let null } - // 通过 View 直接查找(configPage 是 ViewPager2 的第一个子 View) - binding.viewPager.post { - val recyclerView = binding.viewPager.getChildAt(0) as? androidx.recyclerview.widget.RecyclerView - val configView = recyclerView?.findViewHolderForAdapterPosition(0)?.itemView - configView?.let { fillDeviceInfo(it) } - } - } - - /** 填充设备信息 */ - private fun fillDeviceInfo(configView: View) { - configView.findViewById(R.id.tvModel)?.text = + // 设备信息(直接操作已 inflate 的 View,不依赖 ViewPager2 的 ViewHolder) + configPageView.findViewById(R.id.tvModel)?.text = "${devicePrefs.brand} ${devicePrefs.model}" - configView.findViewById(R.id.tvOsVersion)?.text = + configPageView.findViewById(R.id.tvOsVersion)?.text = "Android ${devicePrefs.osVersion}" - configView.findViewById(R.id.tvImei)?.text = run { + configPageView.findViewById(R.id.tvImei)?.text = run { val imei = devicePrefs.imei if (imei.length > 6) "${imei.substring(0, 3)}***${imei.substring(imei.length - 3)}" else imei } - configView.findViewById(R.id.tvAppVersion)?.text = + configPageView.findViewById(R.id.tvAppVersion)?.text = "v${BuildConfig.VERSION_NAME}" }