Android 如何在自定义对话框中显示二维码扫描结果?
我正在使用ZXingAndroid 如何在自定义对话框中显示二维码扫描结果?,android,dialog,zxing,Android,Dialog,Zxing,我正在使用ZXing编译'me.dm7.barcodescanner:ZXing:1.8.4'库扫描二维码。我面临在自定义对话框布局中显示扫描结果的问题 是否有任何方法可以在textView的custom dialog布局中将扫描结果显示为string public class MainActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler { private ZXingScannerVi
编译'me.dm7.barcodescanner:ZXing:1.8.4'
库扫描二维码。我面临在自定义对话框布局中显示扫描结果的问题
是否有任何方法可以在textView
的custom dialog
布局中将扫描结果显示为string
public class MainActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
private ZXingScannerView mScannerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mScannerView = new ZXingScannerView(this);
setContentView(mScannerView);
mScannerView.setResultHandler(this);
mScannerView.startCamera();
}
@Override
public void onPause() {
super.onPause();
mScannerView.stopCamera();
}
@Override
public void onResume() {
super.onResume();
mScannerView.resumeCameraPreview(MainActivity.this);
}
@Override
public void handleResult(Result rawResult) {
Log.e("handler", rawResult.getText()); // Prints scan results
Log.e("handler", rawResult.getBarcodeFormat().toString()); // Prints the scan format (qrcode)
final String shareResult = rawResult.getText();`
我不想用这种方法。但效果很好
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Scan Result");
builder.setMessage(rawResult.getText());
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
//user pressed OK
mScannerView.resumeCameraPreview(MainActivity.this);
}
});
builder.setNeutralButton("Share", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, shareResult);
sendIntent.setType("text/plain");
startActivity(sendIntent);
}
});
AlertDialog alert1 = builder.create();
alert1.show();
}
我想用这个方法。但它不起作用
private void dialogHandler(String result) {
final String shareResult = result;
final Dialog dialog = new Dialog(MainActivity.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.setContentView(R.layout.customdialog);
final ImageView click_ok = (ImageView) dialog.findViewById(R.id.click_ok);
final ImageView click_share = (ImageView) dialog.findViewById(R.id.click_share);
final TextView qrResult = (TextView) findViewById(R.id.qrResult);
qrResult.setText(shareResult);
click_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mScannerView.resumeCameraPreview(MainActivity.this);
dialog.dismiss();
}
});
click_share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, shareResult);
sendIntent.setType("text/plain");
getBaseContext().startActivity(sendIntent);
}
});
dialog.show();
}
}
看看这是否有效
@Override
public void handleResult(Result rawResult) {
Log.e("handler", rawResult.getText()); // Prints scan results
Log.e("handler", rawResult.getBarcodeFormat().toString()); // Prints the scan format (qrcode)
final String shareResult = rawResult.getText();
final Dialog dialog = new Dialog(MainActivity.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.setContentView(R.layout.customdialog);
final ImageView click_ok = (ImageView) dialog.findViewById(R.id.click_ok);
final ImageView click_share = (ImageView) dialog.findViewById(R.id.click_share);
final TextView qrResult = (TextView) findViewById(R.id.qrResult);
qrResult.setText(shareResult);
click_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mScannerView.resumeCameraPreview(MainActivity.this);
dialog.dismiss();
}
});
click_share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, shareResult);
sendIntent.setType("text/plain");
getBaseContext().startActivity(sendIntent);
}
});
dialog.show();
}
您可以在handleResult()方法中获取文本值。您尝试过这个吗?是的。我正在使用
handleResult()
方法,可以将结果显示到警报对话框中,但不能在自定义对话框中显示结果,你能帮我吗?将你的代码发布在这里,那么问题是什么?对话框没有显示还是对话框中的按钮不工作?对话框没有在文本视图中显示字符串。应用程序刚刚崩溃。我尝试了这个。但这不起作用。我发现了问题。无论如何谢谢。这个文本视图也是对话的一部分?耶!我错过了:(是的,因为我认为它被放在activity_main.xml中。无论如何,为您解决了问题干杯。
final TextView qrResult = (TextView) dialog.findViewById(R.id.qrResult);
qrResult.setText(shareResult);