为了账号安全,请及时绑定邮箱和手机立即绑定

如何在其他 Activity 中发送从 QRcode 扫描仪读取的字符串

如何在其他 Activity 中发送从 QRcode 扫描仪读取的字符串

元芳怎么了 2023-05-17 16:36:39
我在 Android 中使用二维码扫描器,我想要拆分值,但我无法将结果从 ScanActivity 发送到 Main_Activity,导致程序崩溃,我在下面有错误(引起:java.lang.NullPointerException:尝试在 com.exampledemo.parsaniahardik.scanbarcodeqrdemonuts 的空对象引用上调用虚拟方法“java.lang.String android.os.BaseBundle.getString(java.lang.String)”。 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);            }        });
查看完整描述

2 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

您可以通过 将扫描活动的结果获取到您的主要活动onActivityResult(),您可以像这样实现它:


 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

        }

    });

扫描活动

    @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

}

现在,我们需要做的就是覆盖onActivityResult()你的MainActivity


@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

     } 

   }

}


查看完整回答
反对 回复 2023-05-17
?
largeQ

TA贡献2039条经验 获得超7个赞

有很多方法可以做到这一点。

  1. 您可以使用startActivityForResult();

  2. 您可以使用界面连接两个活动。

  3. 静态变量也可以帮助你。
    为此,创建一个类并在类内部定义一个静态变量,如下所示。

public class QRDB {

    private static String QRCodeData;

    public static String getData() {

        return QRCodeData;

    }

    public static void setData(String data) {

        this.QRCodeData = data;

    }

然后在 handleResult 方法上调用 setData 方法,如下所示


@Override

public void handleResult(me.dm7.barcodescanner.zbar.Result result) {

    QRDB.setData(result.getContents());

    finish();

}

在 MainActivity 类的 onResume 方法中,您可以访问 QrCode 数据。


@Override

protected void onResume () {

    super.onResume();

    Log.v("Data ", QRDB.getData());

}

希望它能帮助你。


查看完整回答
反对 回复 2023-05-17
  • 2 回答
  • 0 关注
  • 174 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信