简书链接: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);     }
 
  |