#android #android-alertdialog
#Android #android-alertdialog
Вопрос:
Я пытаюсь поместить QR-код в окно оповещения. Я создаю QR-код с помощью библиотеки zxing, поэтому QR-код сначала будет сгенерирован в виде растрового изображения. Здесь моя проблема в том, что я могу установить его только как значок, но не могу найти правильный способ установки в качестве изображения.
Вот что я пробовал:
btn.setOnClickListener(new View.OnClickListener() {
Drawable d;
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
String text = et.getText().toString();
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
try {
BitMatrix bitMatrix = multiFormatWriter.encode(text, BarcodeFormat.QR_CODE, 200, 200);
qr = bitMatrix.hashCode();
BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
final Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
bit = bitmap;
d = new BitmapDrawable(getResources(), bit);
iv.setImageBitmap(bitmap);
builder.setTitle("hi");
builder.setIcon(d);
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "Yes button Clicked", Toast.LENGTH_LONG).show();
Log.i("Code2care ", "Yes button Clicked!");
dialog.dismiss();
}
});
builder.setView(iv).create().show();
//builder.show();
} catch (WriterException e) {
e.printStackTrace();
}
}
});
Так что я получаю
java.lang.Исключение IllegalStateException: у указанного дочернего элемента уже есть родительский элемент. Сначала вы должны вызвать removeView() для родительского элемента дочернего элемента»
в builder.setView(iv).create().show();
Когда я использую решение, найденное в Интернете, например, для добавления представления изображения в диалоговое окно.
Любая помощь будет полезна, заранее спасибо.
Ответ №1:
Журнал ошибок довольно понятен, iv
представление уже добавлено к другому ViewGroup
. Чтобы решить эту проблему, вы должны создать новый ImageView
экземпляр вместо использования iv
.
Комментарии:
1. Спасибо за помощь, но я пробовал, что это не работает. Если вы знаете какой-либо другой способ сделать это, пожалуйста, дайте мне знать. будет полезно
2. да, приложение выходит из строя, показывая то же исключение, о котором я упоминал в вопросе в журналах
3. Вставьте отредактированный код, пожалуйста. Вы не получите то же исключение, если вы изменили свой код для создания нового
ImageView
экземпляра вместо использования уже существующего.