2017-03-17 171 views
0

我是新來使用斑馬線,當我點擊一個按鈕,我想掃描二維碼圖像。這是我的MainActivity.java斑馬線CaptureActivity.handleDecode()

private Button scan; 
    scan = (Button) findViewById(R.id.btn_scan); 
    scan.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

     Intent intent=new Intent(MainActivity.this,CaptureActivity.class); 
     startActivityForResult(intent, SCAN_CODE); 

    } 
    }); 

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (resultCode != Activity.RESULT_OK) { 
      return; 
     } 
     switch (requestCode) { 
     case SCAN_CODE: 
      Intent myIntent=getIntent(); 
      Bundle bundle=myIntent.getExtras(); 
      QR=bundle.getString("QR"); 
      break; 
     default: 
      break; 

     } 
     super.onActivityResult(requestCode, resultCode, data); 
    } 

它會調用CaptureActivity。 handleDecode(),並且這是CaptureActivity.java

 public void handleDecode(Result rawResult, Bitmap barcode, float scaleFactor) { 
      //I want to get the text in the image. 
       String result = rawResult.getText(); 
       Intent intent = new Intent(); 
       intent.putExtra("QR", result); 
       if(result!=null && !"".equals(result)) 
       setResult(RESULT_OK, intent); 
       else{ 
        setResult(RESULT_CANCELED, intent); 
       } 
       finish(); 
} 

但它也有例外 enter image description here

,我卻不知道爲什麼?

+0

請提供一個完整的例子。而不是編寫「這是CaptureActivity.java」,**用'public class CaptureActivity ...'在你的代碼**中顯示它。同樣,你的第一個代碼片段應該是有效的Java,這意味着它應該在一個類中。 –

+0

另外,請複製並粘貼例外。 –

+0

謝謝你的建議,這個問題已經解決了,下次我會照你說的去做。謝謝。 –

回答

0

你應該在你的情況下使用data.getStringExtra("QR"),而不是

Intent myIntent = getIntent(); 
Bundle bundle = myIntent.getExtras(); 
QR = bundle.getString("QR"); 

其中dataonActivityResult()的參數。

並使用!result.isEmpty()而不是!"".equals(result)

它更具可讀性。

希望它可以幫助你!

+0

非常感謝。已通過您的方法解決了問題 –

+0

@JonSnow請務必通過點擊選中標記來接受此答案 –