2016-05-16 59 views
1

我有擁有兩個片段, 我想運行在一個片段斑馬線掃描儀的活動,如何在片段上啓動Zxing?

目前我做這在像這樣>

new IntentIntegrator(this).initiateScan(); // opens up Scan intent > ZXING 

另一個活動是如何做呢行,但打開一個片段的掃描?

此外,我得到這樣的reciever斑馬線結果>

//results when activity enters a callback sent out to another activity 
    public void onActivityResult(int requestCode, int resultCode, Intent intent) { 

我將如何讓他們在我的片段,我要去跑斑馬線上?

日Thnx

回答

3

我怎麼做這行,但開拓掃描的片段?

使用getActivity()來傳遞上下文中IntentIntegrator爲:

new IntentIntegrator(getActivity()).initiateScan(); 

我將如何讓他們在我的片段,我要去跑斑馬線上?

倍率onActivityResultsuper.onActivityResult(requestCode, resultCode, data);線和在兩個片段片段容器活動只是覆蓋onActivityResult方法。

+0

如何在片段本身使用回調 –

1

如果你真的需要在支持片段來打開它,你可以使用:

IntentIntegrator.forSupportFragment(MyFragment.this).initiateScan(); 

在您的片段:

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 
    String barcode = result.getContents(); 
} 

試試吧!

0

以下代碼很有用。 -

IntentIntegrator integrator = new IntentIntegrator(getActivity()) { 
    @Override 
    protected void startActivityForResult(Intent intent, int code) { 
     EditorFragment.this.startActivityForResult(intent, 312); // REQUEST_CODE override 
    } 
}; 

然後你可以覆蓋onActivityResult,並且一切正常。

更多信息 - here you go.

+0

你在哪裏使用片段中的代碼!?你在哪裏使用積分變量? – Rostan

+0

在「BarcodeReader」類中使用它,最好在setOnClickListener()中使用它。在上面的代碼之後,使用積分器變量itegrator.initiateScan()。 – Tom

0

步驟1:包含的build.gradle依賴

dependencies { 
compile fileTree(include: ['*.jar'], dir: 'libs') 
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
    exclude group: 'com.android.support', module: 'support-annotations' 
}) 
compile 'com.journeyapps:zxing-android-embedded:3.5.0' 
compile 'com.android.support:appcompat-v7:25.3.1' 
testCompile 'junit:junit:4.12' 

}

第2步:在OnCreateView,讓一個按鈕被點擊來啓動的掃描二維碼

scan_button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      IntentIntegrator integrator = new IntentIntegrator(getActivity()); 
      integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES); 
      integrator.setPrompt("Please focus the camera on the QR Code"); 
      integrator.setCameraId(0); 
      integrator.setBeepEnabled(false); 
      integrator.setBarcodeImageEnabled(false); 
      integrator.initiateScan(); 
     } 
    }); 

步驟3:在父項活動

protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); 
    if(scanResult != null){ 
     Toast.makeText(this, " >>>>"+scanResult.toString(), Toast.LENGTH_LONG).show(); 
     Log.e(">>>>"," "+scanResult.getContents().toString()); 
    } 
} 

現在qr代碼的解碼內容出現在日誌文件中,並作爲祝酒!