猿问

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

我在 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);

            }

        });


元芳怎么了
浏览 175回答 2
2回答

牛魔王的故事

您可以通过 将扫描活动的结果获取到您的主要活动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        }    });扫描活动    @Overridepublic 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@Overrideprotected 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     }    }}

largeQ

有很多方法可以做到这一点。您可以使用startActivityForResult();您可以使用界面连接两个活动。静态变量也可以帮助你。为此,创建一个类并在类内部定义一个静态变量,如下所示。public class QRDB {    private static String QRCodeData;    public static String getData() {        return QRCodeData;    }    public static void setData(String data) {        this.QRCodeData = data;    }} 然后在 handleResult 方法上调用 setData 方法,如下所示@Overridepublic void handleResult(me.dm7.barcodescanner.zbar.Result result) {    QRDB.setData(result.getContents());    finish();}在 MainActivity 类的 onResume 方法中,您可以访问 QrCode 数据。@Overrideprotected void onResume () {    super.onResume();    Log.v("Data ", QRDB.getData());}希望它能帮助你。
随时随地看视频慕课网APP

相关分类

Java
我要回答