Activity 상의 EditView에 달린 텍스트 리스너(TextWatcher )가
Activity 안에서 구현된 Dialog 상의 EditView에서 입력되는 텍스트 상황에 영향을 끼치는데,
- 바깥의 텍스트 뷰에서만 작동하도록 하고 싶다면
어떻게 해야 할까요? 분명 EditView 안의 리스너에다 집어 넣어놨는데.
커서가 중복 작동 되고 있는 것일까요?
문제를 완전히 해결하지 않더라도 어떤 식으로 풀어나가야 할 지 실마리라도 잡고 싶습니다.
// 임의로 잘라낸 TextWatcher 부분
bt_barcode_input_number.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable s) {
if(s.length() > 0 && s.length() < 4) {
bt_barcode_input_number.setText(null);
}else if(s.length() > 4){
barcode = bt_barcode_input_number.getText().toString();
tb_barcode_number.setText(barcode); // 입력 테스트
});
// 임의로 잘라낸 다이얼로그 부분
AlertDialog.Builder builder = new AlertDialog.Builder(context);
View viewbar = LayoutInflater.from(context).inflate(R.layout.dialog_barcode_count, null, false);
builder.setView(viewbar);
final Button buttonModify = (Button) viewbar.findViewById(R.id.bt_barCount_modify);
final TextView barNumber = (TextView) viewbar.findViewById(R.id.tv_barcodenumber_barCount);
final EditText barCount = (EditText) viewbar.findViewById(R.id.et_barCount);
final AlertDialog dialog = builder.create();
barNumber.setText(bacode_number);
barCount.setText(getString(R.string.barcode_count, listBarcodeItem.get(pos).getCount()));
buttonModify.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
barcode_Item barcode_item = listBarcodeItem.get(getAdapterPosition());
barcode_item.setCount(Integer.parseInt(barCount.getText().toString()));
listBarcodeItem.set(getAdapterPosition(), barcode_item);
notifyItemChanged(getAdapterPosition());
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(barCount.getWindowToken(), 0);
dialog.dismiss();
}
});