我在Android中使用QR码扫描仪,我想拆分值,但是我无法将结果从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);
}
});
**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()
,您可以像这样实现它:
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
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句