У меня есть действие, которое при нажатии кнопки запускает AlertDilalog, который содержит EditText и ImageView. EditText имеет addTextChangedListener, который выполняется, когда пользователь пишет в EditText. В методе afterTextChanged слушателя (TextWatcher) изображение 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 Listener ////
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);
}
};
}