亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在其他 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條經驗 獲得超8個贊

有很多方法可以做到這一點。

  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 關注
  • 225 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號