spinner坑爹bug导致编辑框输入内容错乱到另外编辑框

2021-11-08  本文已影响0人  吉凶以情迁

编辑框冲突、 选择这个编辑框输入内容到了另外一个编辑框,有时候光标不闪烁,甚至键盘都无法弹出了!!!!!! 甚至有时候卡死无法返回退出
有时候按返回关闭都无效,竟然是spinner导致的,spinner无数据的时候我点击了它,就出现了这个问题,我之前以为是某手机问题,坑爹!!!!!!!!!!!!!!!!!!!!!!!11
这问题困惑我很久了,我以为是自定义编辑框有问题,各种排查好像问题依然存在,然后以为是databind问题又以为是lock databind标记问题,各种排除法,终于找到真凶!!!!!!!!
这是我的解决办法,把所有spinner都给替换了


/**
 * Author:Lozn
 * Email:qssq521@gmail.com
 * 修复为空点击了后导致卡死问题
 * 2021/11/8
 * 15:34
 */
public class FixBugSpinner extends AppCompatSpinner {
    public FixBugSpinner(@NonNull Context context) {
        super(context);
    }

    public FixBugSpinner(@NonNull Context context, int mode) {
        super(context, mode);
    }

    public FixBugSpinner(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean performClick() {
        if (emptyBreak(null)) {
            return true;
        }
        return super.performClick();

    }

    public FixBugSpinner(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public FixBugSpinner(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int mode) {
        super(context, attrs, defStyleAttr, mode);
    }

    public FixBugSpinner(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int mode, Resources.Theme popupTheme) {
        super(context, attrs, defStyleAttr, mode, popupTheme);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (emptyBreak(event)) {
            if (event != null && event.getAction() == MotionEvent.ACTION_DOWN) {
                return true;
            }
            return false;
        }
        return super.onTouchEvent(event);
    }

    private boolean emptyBreak(MotionEvent event) {
        if (getAdapter() == null) {
            if (event!=null&&event.getAction() == MotionEvent.ACTION_DOWN) {
                Toast.makeText(getContext(), "当前下拉列表无内容!", Toast.LENGTH_SHORT).show();

            }
            return true;
        }
        if (event!=null&&getAdapter().getCount() == 0) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                Toast.makeText(getContext(), "当前下拉列表无内容", Toast.LENGTH_SHORT).show();

            }
            return true;
        }
        return false;
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
      /*  if (emptyBreak()) {
            if(ev.getAction()==MotionEvent.ACTION_DOWN){
                return true;
            }
            return true;
        }*/
        return super.dispatchTouchEvent(ev);
    }
上一篇下一篇

猜你喜欢

热点阅读