如何在警告对话框中放置二维码?
How can I put a QR-code in an alert dialog?
我正在尝试将二维码放入警告框中。我正在使用 zxing 库创建 QR 码,因此 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:
The specified child already has a parent. You must call removeView()
on the child's parent first"
在 builder.setView(iv).create().show();
当我使用在网络上找到的解决方案时,即向对话框添加图像视图。
任何帮助都会有用,在此先感谢。
错误日志非常清楚,iv
视图已添加到另一个 ViewGroup
。要解决它,您应该创建一个新的 ImageView
实例而不是使用 iv
.
我正在尝试将二维码放入警告框中。我正在使用 zxing 库创建 QR 码,因此 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: The specified child already has a parent. You must call removeView() on the child's parent first"
在 builder.setView(iv).create().show();
当我使用在网络上找到的解决方案时,即向对话框添加图像视图。
任何帮助都会有用,在此先感谢。
错误日志非常清楚,iv
视图已添加到另一个 ViewGroup
。要解决它,您应该创建一个新的 ImageView
实例而不是使用 iv
.