简书链接:spinner坑爹bug导致编辑框输入内容错乱到另外编辑框
文章字数:263,阅读全文大约需要1分钟
编辑框冲突、 选择这个编辑框输入内容到了另外一个编辑框,有时候光标不闪烁,甚至键盘都无法弹出了!!!!!! 甚至有时候卡死无法返回退出
有时候按返回关闭都无效,竟然是spinner导致的,spinner无数据的时候我点击了它,就出现了这个问题,我之前以为是某手机问题,坑爹!!!!!!!!!!!!!!!!!!!!!!!11
这问题困惑我很久了,我以为是自定义编辑框有问题,各种排查好像问题依然存在,然后以为是databind问题又以为是lock databind标记问题,各种排除法,终于找到真凶!!!!!!!!
这是我的解决办法,把所有spinner都给替换了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| /** * Author:Lozn * Email:[email protected] * 修复为空点击了后导致卡死问题 * 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); }
|