Skip to content

Commit 54f1a32

Browse files
committed
fix: 全局修复 SharedElementCallback 回调中因为异常提前返回未清空 sharedElements 的隐患
1 parent d3b70b7 commit 54f1a32

3 files changed

Lines changed: 10 additions & 3 deletions

File tree

app/src/main/java/cn/cqautotest/sunnybeach/ui/activity/GalleryActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ class GalleryActivity : AppActivity() {
108108
}
109109
setEnterSharedElementCallback(object : SharedElementCallback() {
110110
override fun onMapSharedElements(names: MutableList<String>, sharedElements: MutableMap<String, View>) {
111+
sharedElements.clear()
111112
val currentPhoto = mPhotoList.getOrNull(mBinding.galleryViewPager2.currentItem) ?: return
112113
val recyclerView = mBinding.galleryViewPager2.getChildAt(0) as? RecyclerView ?: return
113114
val viewHolder = recyclerView.findViewHolderForAdapterPosition(mBinding.galleryViewPager2.currentItem) as? QuickViewHolder ?: return
@@ -118,7 +119,6 @@ class GalleryActivity : AppActivity() {
118119
names.clear()
119120
names.add(currentPhoto.id)
120121
}
121-
sharedElements.clear()
122122
sharedElements[currentPhoto.id] = sharedView
123123
}
124124
})

app/src/main/java/cn/cqautotest/sunnybeach/ui/activity/WallpaperActivity.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,11 @@ class WallpaperActivity : AppActivity() {
2929
setExitSharedElementCallback(object : SharedElementCallback() {
3030
override fun onMapSharedElements(names: MutableList<String>, sharedElements: MutableMap<String, View>) {
3131
val fragment = supportFragmentManager.findFragmentById(R.id.wallpaper_fragment_container) as? DiscoverFragment
32-
fragment?.onMapSharedElements(names, sharedElements)
32+
if (fragment == null) {
33+
sharedElements.clear()
34+
return
35+
}
36+
fragment.onMapSharedElements(names, sharedElements)
3337
}
3438
})
3539
}

app/src/main/java/cn/cqautotest/sunnybeach/ui/fragment/DiscoverFragment.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,10 @@ class DiscoverFragment : PagingTitleBarFragment<AppActivity>() {
7979
* 由 Activity 委托调用的共享元素映射
8080
*/
8181
fun onMapSharedElements(names: MutableList<String>, sharedElements: MutableMap<String, View>) {
82-
if (isUiInvalid) return
82+
if (isUiInvalid) {
83+
sharedElements.clear()
84+
return
85+
}
8386
// 如果 names 为空,说明没有共享元素
8487
if (names.isEmpty()) return
8588
// 关键:从 names 中获取目标 ID(由详情页传回)

0 commit comments

Comments
 (0)