Android中Fragment使用Zxing實現掃碼(簡單版)
阿新 • • 發佈:2021-01-12
Android中Fragment使用Zxing實現掃碼(簡單版)
Android 的Fragment 呼叫zxing掃碼並採用onActivityResult獲得掃碼值的方法
Android Studio、Fragmeng、 Zxing 、onActivityResult、IntentIntegrator
在fragmeng中實現zxing掃碼功能
與在Activity實現掃碼的方式相似,首先引入依賴:
implementation 'com.journeyapps:zxing-android-embedded:3.5.0'
compile 'com.google.zxing:core:3.3.0'
在Activity(我這裡是MainActivity.class中)實現掃碼的方法如下:
IntentIntegrator intentIntegrator= new IntentIntegrator(MainActivity);
intentIntegrator.initiateScan();
//處理掃碼結果——可用草料二維碼
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super .onActivityResult(requestCode,resultCode,data);
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (result != null) {
if (result.getContents() == null) {
Toast.makeText(this.getActivity(), "取消掃描", Toast. LENGTH_LONG).show();
} else {
Toast.makeText(this.getActivity(), "掃描內容:" + result.getContents(), Toast.LENGTH_LONG).show();
wcName.setText(result.getContents());
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
//處理結果
}
Fragmeng實現掃碼並獲得掃碼值
*在IntentIntegrator中使用getActivity(),在Fragment中使用onActivityResult時,要首先在宿主Activity中重寫該方法,其程式碼如下:
我這裡是一個Mainpage+4個Fragmeng,在Fragmeng中程式碼如下:
IntentIntegrator intentIntegrator= new IntentIntegrator(getActivity());
intentIntegrator.initiateScan();
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode,resultCode,data);
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (result != null) {
if (result.getContents() == null) {
Toast.makeText(this.getActivity(), "取消掃描", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this.getActivity(), "掃描內容:" + result.getContents(), Toast.LENGTH_LONG).show();
wcName.setText(result.getContents());
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
//處理結果
}
**在Mainpage裡重寫onActivityResult方法;
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
getSupportFragmentManager().getFragments();
if (getSupportFragmentManager().getFragments().size() > 0) {
List<Fragment> fragments = getSupportFragmentManager().getFragments();
for (Fragment mFragment : fragments) {
mFragment.onActivityResult(requestCode, resultCode, data);
}
}
}