如何在另一Activity中展示ZXing库的扫码结果?
实现扫码结果跳转至另一个Activity的方案
步骤1:修改MainActivity中的扫码结果回调
在barcodeLauncher的回调逻辑里,替换原有的Toast提示,改为启动ScanProduct并传递扫码结果:
scanQR.setOnClickListener(new View.OnClickListener(){ private final ActivityResultLauncher<ScanOptions> barcodeLauncher = registerForActivityResult(new ScanContract(), result -> { if(result.getContents() == null) { Toast.makeText(MainActivity.this, "Cancelled", Toast.LENGTH_LONG).show(); } else { // 启动ScanProduct并传递扫码结果 Intent intent = new Intent(MainActivity.this, ScanProduct.class); intent.putExtra("SCAN_RESULT", result.getContents()); startActivity(intent); } }); @Override public void onClick(View view){ ScanOptions options = new ScanOptions(); options.setDesiredBarcodeFormats(ScanOptions.ALL_CODE_TYPES); options.setPrompt("Scan a product"); options.setBeepEnabled(false); options.setBarcodeImageEnabled(false); options.setOrientationLocked(true); options.setCaptureActivity(CaptureActivity.class); barcodeLauncher.launch(options); } });
步骤2:修改ScanProduct接收并展示扫码结果
在ScanProduct的onCreate方法中,从Intent中获取传递的扫码结果,并设置到指定TextView上:
TextView resultScan; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_scan_product); resultScan = findViewById(R.id.result_scan); // 获取扫码结果并展示 String scanResult = getIntent().getStringExtra("SCAN_RESULT"); if (scanResult != null) { resultScan.setText(scanResult); } }
额外注意事项
- 确保
ScanProduct已在AndroidManifest.xml中注册:<activity android:name=".ScanProduct"/> - 若需处理扫码结果为空的边界情况,可在
ScanProduct中添加判断逻辑,比如显示默认提示文本。
内容的提问来源于stack exchange,提问作者Ale26
相关产品推荐
相关产品推荐

