Fragment点击穿透
我目前项目的首页是一个MainActivity包含5个Fragment,通过hide&show来进行tab切换。在刚开始就遇到了一个很恶心的问题:当前Fragment页,点击能跳转到其他Fragment页的内容。具体来说就是不应该被点击的位置,出现了其它Fragment页面对应位置的点击事件。这个问题不是100%的复现的,而且有些机型不会出现,有些又很频繁
这个问题实际上是点击事件分发的问题,当多个Fragment添加进Fragment栈时,栈底的Fragment的点击事件在上层Fragment出现后仍然有效。具体的解决方法有三种,可以点进帖子中查看。
在我的项目中由于使用Fragment比较多,所以我使用了第二种方案,在BaseFragment中全局添加了view.setClickable(true); 问题再也没复现过了。
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(this.getLayoutId(), container, false);
rootView.setClickable(true); //把View的click属性设为true,截断点击时间段扩散
return super.onCreateView(inflater, container, savedInstanceState);
}
Fragment重叠(重影)
这个问题刚好跟上一个相反,上一个问题是界面看不出重叠,但点击事件重叠了。而这个是只有界面重叠,点击却没有问题(也可能是因为我已经把上一个问题解决了,不解决的话可能就都有问题了- - )

本文主要介绍了在Android应用中,通过hide&show管理多个Fragment时遇到的点击穿透和界面重叠问题。针对点击穿透问题,作者提出在BaseFragment中全局处理,有效避免了事件分发错误。对于Fragment重叠,原因是异常销毁后恢复时未正确处理,解决方案包括检查`android:fitsSystemWindows="true"`属性以及在MainActivity中保存和恢复Fragment状态。文章还分享了详细的代码实现,提供了解决这类问题的有效途径。

1272

被折叠的 条评论
为什么被折叠?



