마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

TextWatcher와 Dialog 질문

0 추천

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

 

벨로린 (120 포인트) 님이 2019년 9월 20일 질문
벨로린님이 2019년 9월 20일 reopened
이렇게 해결하면 안 된다는 이야기를 들었는데, 각기 다른 TextView에서 생겨나는 인풋 관리를 어떻게 디버깅으로 확인할 수 있을까요?
코드 상으로는 어떤 증상인지 힘드니, 좀 더 자세히 적어보시고, 본문의 소스도 왼쪽의 여백을 저렇게 많지 않게 수정해보세요.

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...