gpt4 book ai didi

java - 如何在其他 Activity 中发送从二维码扫描仪读取的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 09:28:54 24 4
gpt4 key购买 nike

我在Android中使用QR码扫描仪,我想要分割值,但我无法从ScanActivity将结果发送到Main_Activity,导致程序崩溃,并且我在下面出现错误

(Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.BaseBundle.getString(java.lang.String)' on a null object reference at com.exampledemo.parsaniahardik.scanbarcodeqrdemonuts.MainActivity.onCreate(MainActivity.java:26))

有人可以帮我吗?


*** MainActivity Code
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


Button btn = (Button) findViewById(R.id.btn);

Bundle my_split = getIntent().getExtras();
String st = my_split.getString("tvresult1");


String totale = st;
String [] parte = totale.split("-");

part1 = parte[0];
part2 = parte[1];
part3 = parte[2];
part4 = parte[3];
part5 = parte[4];
part6 = parte[5];

MainActivity.Name.setText(""+part1);
MainActivity.TNumber.setText(""+part2);
MainActivity.date.setText(""+part3);
MainActivity.numberOf.setText(""+part4);
MainActivity.sum.setText(""+part5);
MainActivity.amount.setText(""+part6);


btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, ScanActivity.class);
startActivity(intent);
}
});






**ScanActivity

package com.exampledemo.parsaniahardik.scanbarcodeqrdemonuts;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import me.dm7.barcodescanner.zbar.ZBarScannerView;

public class ScanActivity extends AppCompatActivity implements ZBarScannerView.ResultHandler {
private ZBarScannerView mScannerView;

String part1,part2,part3,part4,part5,part6;
//camera permission is needed.

@Override
public void onCreate(Bundle state) {
super.onCreate(state);
mScannerView = new ZBarScannerView(this); // Programmatically initialize the scanner view
setContentView(mScannerView); // Set the scanner view as the content view
}

@Override
public void onResume() {
super.onResume();
mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
mScannerView.startCamera(); // Start camera on resume
}

@Override
public void onPause() {
super.onPause();
mScannerView.stopCamera(); // Stop camera on pause
}

@Override
public void handleResult(me.dm7.barcodescanner.zbar.Result result) {
// Do something with the result here
Log.v("kkkk", result.getContents()); // Prints scan results
Log.v("uuuu", result.getBarcodeFormat().getName()); // Prints the scan format (qrcode, pdf417 etc.)



// MainActivity.tvresult.setText(result.getContents());
// onBackPressed();

Intent mainActivity = new Intent(this,MainActivity.class);
mainActivity.putExtra("tvresult1",result.getContents().toString());
startActivity(mainActivity);

}




}

最佳答案

您可以通过onActivityResult()从扫描 Activity 获取结果到您的主 Activity ,您可以这样实现:

 btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, ScanActivity.class);
startActivityForResult(intent, 500) //500 is our request code, we will use this to check if incoming data is what we want. You can put any integer value in it
}
});

扫描 Activity

    @Override
public void handleResult(me.dm7.barcodescanner.zbar.Result result) {
// Do something with the result here
Log.v("kkkk", result.getContents()); // Prints scan results
Log.v("uuuu", result.getBarcodeFormat().getName()); // Prints the scan format (qrcode, pdf417 etc.)

Intent mainActivity = new Intent(this,MainActivity.class);
mainActivity.putExtra("tvresult1",result.getContents().toString());
setResult(Activity.RESULT_OK, mainActivity);
finish(); //exiting your ScanActivity
}

现在,我们需要做的就是重写 MainActivity 中的 onActivityResult()

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == 500) { //Remember the result code we set in startActivityForResult()? This is how we identify our incoming data
if(resultCode == Activity.RESULT_OK){ //Data is received
String result= data.getStringExtra("tvresult1");
//Your result is received
}
}
}

关于java - 如何在其他 Activity 中发送从二维码扫描仪读取的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57358016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com