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

 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));


 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);
			}
				
			
    	}

    }

	
	
}


你可能感兴趣的:(android editview 设置TextWatcher 输入监听后产生崩溃)