EditText不显示键入的字符

时间:2019-05-12 13:33:36

标签: android alertdialog textwatcher on-screen-keyboard addtextchangedlistener

我有一个活动,只需按一下按钮即可启动一个AlertDilalog,其中包含一个EditText和一个ImageView。 EditText具有一个addTextChangedListener,当用户写入EditText时执行该addTextChangedListener。在侦听器(TextWatcher)的afterTextChanged方法中,更改了ImageView图像。异常之处在于,当用户在EditText中进行写入时,ImageView被正确分配,而在Edittext中则不会出现键入的字符。

我注意到只有在电话上按下后退按钮时(实际上是键盘消失时),键入的文本才会出现在EditText上。最终,我发现,如果我将与ImageView图像更改有关的代码行注释为异常,就不会发生此问题。

///// AlertDialog,声明为EditText的侦听器/////

private void showDialog(Context context) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        final View layout = LayoutInflater.from(this).inflate(R.layout.alert_dialog, null);
        builder.setView(layout);

        builder.setNegativeButton("Annulla", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });

        EditText nomePrd = layout.findViewById(R.id.txt_prd);
        nomePrd.addTextChangedListener(changedText(layout));


        builder.setPositiveButton("Salva", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

                dialog.dismiss();
            }
        });

        builder.show();
    }

//// EditText侦听器////

public TextWatcher changedText(final View layout) {
        return 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) {

                ImageView imgPrd=(ImageView)(layout).findViewById(R.id.imageProduct);
                imgPrd.setImageResource(R.drawable.ic_launcher_background);
            }

        };
    }

0 个答案:

没有答案