我有一个活动,只需按一下按钮即可启动一个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);
}
};
}