Как я могу поместить QR-код в диалоговое окно оповещения?

#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 экземпляра вместо использования уже существующего.