2016-11-21 104 views
0

開始QR碼掃描器我一直在尋找一個在互聯網上的答案。Android工作室 - 從片段

事情是,我發現很多方法來實施一個QR碼掃描儀在我的應用程序,在一項活動。

這其中的方法之一:

 scan_btn = (Button) view.findViewById(R.id.scan_btn); 
    scan_btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      IntentIntegrator integrator = new IntentIntegrator(getActivity()); 
      integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES); 
      integrator.setPrompt("Scan!!"); 
      integrator.setCameraId(0); 
      integrator.setBeepEnabled(false); 
      integrator.setBarcodeImageEnabled(false); 
      integrator.initiateScan(); 
     } 
    });  

現在,我想它在一個片段工作。 的問題是,它開始一個新的活動(QR碼閱讀器) 掃描QR碼 但我沒有得到我的onActivityResult響應:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 

    if (result != null) { 
     if (result.getContents() == null) { 
      System.out.println("Cancelled"); 
      Toast.makeText(getActivity(), "You cancelled the scanning!", Toast.LENGTH_LONG).show(); 
     } else { 
      System.out.println("Worked: " + result.getContents()); 
      Toast.makeText(getActivity(), "scanned: " + result.getContents(), Toast.LENGTH_LONG).show(); 
     } 
    } else { 
     super.onActivityResult(requestCode, resultCode, data); 
    } 
} 

但什麼錯誤?

我猜它與這部分做的事:

IntentIntegrator integrator = new IntentIntegrator(getActivity());  

它得到了活動,但它是一個片段,而不是活動。 我該如何解決這個問題?

首先通信我的活動,其中包含片段,然後得到結果? 請幫助,謝謝:)

+0

只需在構造函數中傳遞fragment而不是getActivity –

回答

0

我會推測onActivityResult的執行在Fragment上,對不對?

您的Fragment上的IntentIntegrator實施是正確的。所以,只需從Fragment中移除您的onActivityResult代碼並將其放置在活動中。

我有類似的問題,這是我的解決方案。

+0

謝謝你,這是問題所在! –

1

也許你會在這篇文章中找到答案。

onActivityResult is not being called in Fragment

否則你必須分享你的代碼提供更多的信息。按鈕ant是附加到片段還是活動本身?在片段類中實現了顯示的onActivityResult方法嗎?

+0

他對你的問題分享了正確的迴應,檢查IntentIntegrator類的第338行 - > https://github.com/zxing/zxing/blob/master/android-integration /src/main/java/com/google/zxing/integration/android/IntentIntegrator.java,傳遞給構造函數的活動如此片段爲空並且不正確地傳遞結果 –