Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在自定义对话框中显示二维码扫描结果?_Android_Dialog_Zxing - Fatal编程技术网

Android 如何在自定义对话框中显示二维码扫描结果?

Android 如何在自定义对话框中显示二维码扫描结果?,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

我正在使用ZXing
编译'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);