fix: 设置页数据不显示 - 直接操作inflate好的View
之前通过ViewPager2内部查找ViewHolder,但Page0未创建时找不到。 改为直接保存inflate好的configPageView引用,数据填充不依赖ViewPager2。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -155,8 +155,12 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
|
|||||||
|
|
||||||
// ===== 设置页 =====
|
// ===== 设置页 =====
|
||||||
|
|
||||||
/** 绑定设置页 View 引用 */
|
/** 保存 configPage 引用,用于直接填充数据 */
|
||||||
|
private lateinit var configPageView: View
|
||||||
|
|
||||||
|
/** 绑定设置页 View 引用并直接填充数据 */
|
||||||
private fun bindConfigViews(page: View) {
|
private fun bindConfigViews(page: View) {
|
||||||
|
configPageView = page
|
||||||
configStatusBar = page.findViewById(R.id.statusBar)
|
configStatusBar = page.findViewById(R.id.statusBar)
|
||||||
tvAvatarLetter = page.findViewById(R.id.tvAvatarLetter)
|
tvAvatarLetter = page.findViewById(R.id.tvAvatarLetter)
|
||||||
tvUserName = page.findViewById(R.id.tvUserName)
|
tvUserName = page.findViewById(R.id.tvUserName)
|
||||||
@@ -168,7 +172,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 初始化设置页数据 */
|
/** 初始化设置页数据(直接用 inflate 好的 configPageView) */
|
||||||
private fun initConfigPage() {
|
private fun initConfigPage() {
|
||||||
// 用户信息
|
// 用户信息
|
||||||
val userName = userPrefs.userName
|
val userName = userPrefs.userName
|
||||||
@@ -182,28 +186,17 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
|
|||||||
mobile
|
mobile
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设备信息
|
// 设备信息(直接操作已 inflate 的 View,不依赖 ViewPager2 的 ViewHolder)
|
||||||
val configPage = (binding.viewPager.adapter as? HomePagerAdapter)?.let { return@let null }
|
configPageView.findViewById<TextView>(R.id.tvModel)?.text =
|
||||||
// 通过 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<TextView>(R.id.tvModel)?.text =
|
|
||||||
"${devicePrefs.brand} ${devicePrefs.model}"
|
"${devicePrefs.brand} ${devicePrefs.model}"
|
||||||
configView.findViewById<TextView>(R.id.tvOsVersion)?.text =
|
configPageView.findViewById<TextView>(R.id.tvOsVersion)?.text =
|
||||||
"Android ${devicePrefs.osVersion}"
|
"Android ${devicePrefs.osVersion}"
|
||||||
configView.findViewById<TextView>(R.id.tvImei)?.text = run {
|
configPageView.findViewById<TextView>(R.id.tvImei)?.text = run {
|
||||||
val imei = devicePrefs.imei
|
val imei = devicePrefs.imei
|
||||||
if (imei.length > 6) "${imei.substring(0, 3)}***${imei.substring(imei.length - 3)}"
|
if (imei.length > 6) "${imei.substring(0, 3)}***${imei.substring(imei.length - 3)}"
|
||||||
else imei
|
else imei
|
||||||
}
|
}
|
||||||
configView.findViewById<TextView>(R.id.tvAppVersion)?.text =
|
configPageView.findViewById<TextView>(R.id.tvAppVersion)?.text =
|
||||||
"v${BuildConfig.VERSION_NAME}"
|
"v${BuildConfig.VERSION_NAME}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user