From dc2e7147d93bcad6f6f9f387dcee1503de5ce1ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B6=E5=AD=90=E7=BB=B4?= Date: Thu, 9 Jan 2025 11:25:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DViewStub=E5=81=B6?= =?UTF-8?q?=E5=8F=91=E9=97=AA=E9=80=80=E9=97=AE=E9=A2=98=20https://sentry.?= =?UTF-8?q?shanqu.cc/organizations/lightgame/issues/422108/events/=3Fproje?= =?UTF-8?q?ct=3D22=20https://sentry.shanqu.cc/organizations/lightgame/issu?= =?UTF-8?q?es/425087/=3Fproject=3D22?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gh/gamecenter/home/custom/CustomPageFragment.kt | 6 +++--- .../com/gh/gamecenter/personal/HaloPersonalFragment.kt | 2 +- .../gh/gamecenter/wrapper/BaseTabWrapperFragment.kt | 6 +++--- .../wrapper/SearchToolbarTabWrapperFragment.kt | 2 +- .../gh/gamecenter/common/base/fragment/LazyFragment.kt | 7 ++----- .../java/com/gh/gamecenter/common/utils/Extensions.kt | 10 +++++++++- 6 files changed, 19 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/gh/gamecenter/home/custom/CustomPageFragment.kt b/app/src/main/java/com/gh/gamecenter/home/custom/CustomPageFragment.kt index f8aa54032b..69c563bbae 100644 --- a/app/src/main/java/com/gh/gamecenter/home/custom/CustomPageFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/home/custom/CustomPageFragment.kt @@ -239,7 +239,7 @@ class CustomPageFragment : LazyFragment(), ISmartRefreshContent, IScrollable { viewModel.loadFirst(false) } } - binding.reuseNoConnectionStub.inflate() + binding.reuseNoConnectionStub.inflateOrShow() } else { noConnectionBinding?.root?.visibility = View.VISIBLE } @@ -249,7 +249,7 @@ class CustomPageFragment : LazyFragment(), ISmartRefreshContent, IScrollable { noDataBinding = ReuseNoneDataBinding.bind(inflated) noDataBinding?.root?.visibility = View.VISIBLE } - binding.reuseNoDataStub.inflate() + binding.reuseNoDataStub.inflateOrShow() } else { noDataBinding?.root?.visibility = View.VISIBLE } @@ -304,7 +304,7 @@ class CustomPageFragment : LazyFragment(), ISmartRefreshContent, IScrollable { } initSearchBar(it) } - binding.reuseSearchBarStub.inflate() + binding.reuseSearchBarStub.inflateOrShow() } else { initSearchBar(it) } diff --git a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt index ec9ce66a54..7ac94b6864 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt @@ -701,7 +701,7 @@ class HaloPersonalFragment : BaseLazyFragment() { } private fun inflateRealView() { - mBinding.stub.inflate() + mBinding.stub.inflateOrShow() mStubBinding.statusBar.goneIf(Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) mStubBinding.darkModeIv.goneIf(!(Config.getNightModeSetting()?.icon ?: false)) diff --git a/app/src/main/java/com/gh/gamecenter/wrapper/BaseTabWrapperFragment.kt b/app/src/main/java/com/gh/gamecenter/wrapper/BaseTabWrapperFragment.kt index e761e3c332..1dce41d7be 100644 --- a/app/src/main/java/com/gh/gamecenter/wrapper/BaseTabWrapperFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/wrapper/BaseTabWrapperFragment.kt @@ -160,7 +160,7 @@ abstract class BaseTabWrapperFragment : BaseLazyFragment(), IMultiTab { showLoading(true) } } - noConnectionStub?.inflate() + noConnectionStub?.inflateOrShow() } else { noConnectionBinding?.root?.visibility = View.VISIBLE } @@ -176,7 +176,7 @@ abstract class BaseTabWrapperFragment : BaseLazyFragment(), IMultiTab { noDataBinding = ReuseNoneDataBinding.bind(inflated) noDataBinding?.root?.visibility = View.VISIBLE } - noDataStub?.inflate() + noDataStub?.inflateOrShow() } else { noDataBinding?.root?.visibility = View.VISIBLE } @@ -192,7 +192,7 @@ abstract class BaseTabWrapperFragment : BaseLazyFragment(), IMultiTab { loadingBinding = ReuseLoadingBinding.bind(inflated) loadingBinding?.root?.visibility = View.VISIBLE } - loadingStub?.inflate() + loadingStub?.inflateOrShow() } else { loadingBinding?.root?.visibility = View.VISIBLE } diff --git a/app/src/main/java/com/gh/gamecenter/wrapper/SearchToolbarTabWrapperFragment.kt b/app/src/main/java/com/gh/gamecenter/wrapper/SearchToolbarTabWrapperFragment.kt index 32b562f802..3779d30f58 100644 --- a/app/src/main/java/com/gh/gamecenter/wrapper/SearchToolbarTabWrapperFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/wrapper/SearchToolbarTabWrapperFragment.kt @@ -957,7 +957,7 @@ class SearchToolbarTabWrapperFragment : BaseTabWrapperFragment(), ISearchToolbar setPullDownPushInternal(pullDownPush, pullDownPushHandler) } try { - binding.autoVideoViewStub.inflate() + binding.autoVideoViewStub.inflateOrShow() } catch (e: Exception) { SentryHelper.onEvent("VIEW_STUB_INFLATE_ERROR", "digest", e.localizedMessage) } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/base/fragment/LazyFragment.kt b/module_common/src/main/java/com/gh/gamecenter/common/base/fragment/LazyFragment.kt index 1eaf426636..2f369166dd 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/base/fragment/LazyFragment.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/base/fragment/LazyFragment.kt @@ -4,6 +4,7 @@ import android.os.Bundle import android.view.View import android.view.ViewStub import com.gh.gamecenter.common.R +import com.gh.gamecenter.common.utils.inflateOrShow /** * 这是在 BaseLazyFragment 之上添加了一些通用功能的抽象类 @@ -66,11 +67,7 @@ abstract class LazyFragment : BaseLazyFragment() { } else { mViewStub?.layoutResource = getRealLayoutId() mViewStub?.setOnInflateListener { _, inflatedView -> onRealLayoutInflated(inflatedView) } - if (mViewStub?.parent != null) { - mViewStub?.inflate()?.let { mCachedView = it } - } else { - mViewStub?.visibility = View.VISIBLE - } + mViewStub?.inflateOrShow()?.let { mCachedView = it } } } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/Extensions.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/Extensions.kt index 259db0bc7b..fffe615fc6 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/Extensions.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/Extensions.kt @@ -1704,4 +1704,12 @@ fun RecyclerView.tryToClearRecycler() { } catch (e: java.lang.Exception) { e.printStackTrace() } -} \ No newline at end of file +} + +fun ViewStub.inflateOrShow(): View? = + if (parent != null) { + inflate() + } else { + visibility = View.VISIBLE + null + } \ No newline at end of file