android editview 设置TextWatcher 输入监听后产生崩溃

<span style="font-size:24px;"> int inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
        //正负开锁输入框
        et_unlockType = (EditText)findViewById(R.id.et_unlockN);
        et_unlockType.setInputType(inputType);
        et_unlockType.addTextChangedListener(new EditChangedListener(this));
</span>


<span style="font-size:24px;"> <span style="font-size:18px;">class EditChangedListener implements TextWatcher{
    	private Context mContext;
    	private CharSequence temp;			//监听前的文本
    	private int editStart;				//光标开始的位置
    	private int editEnd;				//光标结束的位置
    	private final int charMaxNum = 2;
    	private boolean DEBUG = true;
    	private String TAG = "输出: ";
     	
    	public EditChangedListener(Context context)
    	{
    		mContext = context;
    	}
    	
    	@Override
    	public void beforeTextChanged(CharSequence s, int start, int count,
    			int after) {
    		// TODO Auto-generated method stub
    		if(DEBUG)
    			Log.i(TAG,"输入文本之前的状态");
    		temp = s;
    		if (radioButton != null) {
    			if (radioButton.isChecked()) {
    				radioButton.setChecked(false);
				}
    			
			}
    	}

    	@Override
    	public void onTextChanged(CharSequence s, int start, int before, int count) {
    		// TODO Auto-generated method stub
    		if(DEBUG)
    			Log.i(TAG,"输入文字中的状态,count是一次性输入字符数");
    		
    	}

    	@Override
    	public void afterTextChanged(Editable s) {
    		// TODO Auto-generated method stub
    		if(DEBUG)
    			Log.i(TAG, "输入文字后的状态");
    		/**得到光标开始和结束位置 ,超过最大数后记录刚超出的数字索引进行控制**/
    		editStart = et_unlockType.getSelectionStart();
    		editEnd = et_unlockType.getSelectionEnd();
    		if (temp.length() > charMaxNum) {
				Toast.makeText(mContext, "你输入的字数已经超过限制!", Toast.LENGTH_SHORT).show();
				s.delete(editStart -1 , editEnd);
				int tempSelection = editStart;
				et_unlockType.setText(s);
				textView.setText("选中开锁方式:正负"+s+"开锁");
				et_unlockType.setSelection(tempSelection);
			}
				
			
    	}

    }

	
	
}</span></span>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值