2017-07-08 93 views
0

我想将条形码扫描仪的结果上传到编辑文本,但它不显示在编辑文本中。我可以知道问题是什么,我该如何解决?无法读取条形码扫描仪的输出

这是我的代码

import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.Toast; 
import com.google.zxing.Result; 
import me.dm7.barcodescanner.zxing.ZXingScannerView; 

public class ScannerActivity extends AppCompatActivity { 
private ZXingScannerView scannerView; 
private EditText ScanBarcode; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_scanner); 

    ScanBarcode = (EditText)findViewById(R.id.editscanbar); 
} 

public void scanCode(View view){ 
    scannerView = new ZXingScannerView(this); 
    scannerView.setResultHandler(new ZXingScannerResultHandler()); 

    setContentView(scannerView); 
    scannerView.startCamera(); 
} 
@Override 
public void onPause(){ 
    super.onPause(); 
    scannerView.stopCamera(); 
} 

class ZXingScannerResultHandler implements ZXingScannerView.ResultHandler{ 
      @Override 
      public void handleResult(Result result){ 
       String resultCode = result.getText().toString(); 
       ScanBarcode.setText(resultCode); 
       Toast.makeText(ScannerActivity.this, resultCode, 
Toast.LENGTH_SHORT).show(); 

       setContentView(R.layout.activity_scanner); 
       scannerView.stopCamera(); 

    } 
} 
} 

我已经改变了它,仍然没有什么显示在编辑文本了

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import com.google.zxing.Result; 
import me.dm7.barcodescanner.zxing.ZXingScannerView; 

public class ScannerActivity extends AppCompatActivity implements 
ZXingScannerView.ResultHandler { 
private ZXingScannerView mScannerView; 
private EditText ScanBarcode; 
@Override 
public void onCreate(Bundle State) { 
    super.onCreate(State); 
    mScannerView = new ZXingScannerView(this); 
    setContentView(R.layout.activity_scanner); 

    ScanBarcode = (EditText)findViewById(R.id.editscanbar); 
} 

public void scanCode(View view){ 
    mScannerView.setResultHandler(this); 

    setContentView(mScannerView); 
    mScannerView.startCamera(); 
} 
@Override 
public void onResume(){ 
    super.onResume(); 
    mScannerView.setResultHandler(this); 
    mScannerView.startCamera(); 
} 

@Override 
public void onPause(){ 
    super.onPause(); 
    mScannerView.stopCamera(); 
} 
@Override 
public void handleResult(Result rawResult){ 
    ScanBarcode.setText(rawResult.getText()); 

    setContentView(R.layout.activity_scanner); 
    mScannerView.stopCamera(); 
} 

} 

回答

0

应实现ResultHandler在你的活动,覆盖回调方法,并在那里设置扫描的结果在您的EditText中,例如:

public class SimpleScannerActivity extends Activity implements ZXingScannerView.ResultHandler { 
private ZXingScannerView mScannerView; 
private EditText editText; 

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

    EditText editText = (EditText)findViewById(R.id.myedittext); 
} 

@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(Result rawResult) { 
    // Do something with the result here 
    editText.setText(rawResult.getText()); 
    Log.v(TAG, rawResult.getText()); // Prints scan results 
    Log.v(TAG, rawResult.getBarcodeFormat().toString()); // Prints the scan format (qrcode, pdf417 etc.) 

    // If you would like to resume scanning, call this method below: 
    mScannerView.resumeCameraPreview(this); 
} 
} 

希望它有帮助!