我开发了扫描条形码的应用程序。我的应用程序是带有2个选项卡的Android TabView应用程序。我想在两者中添加条形码扫描仪。
我的代码如下:
片段1:
public class WebServiceFragment extends Fragment {
RelativeLayout scanServiceView;
ScanditSDKAutoAdjustingBarcodePicker barcodePicker;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(container == null) {
return null;
}
View v = inflater.inflate(R.layout.webservice_layout, container, false);
scanServiceView = (RelativeLayout)v.findViewById(R.id.scanserviceview);
barcodePicker = new ScanditSDKAutoAdjustingBarcodePicker(getActivity(), "<My Scandit SDK Key 1>", ScanditSDKAutoAdjustingBarcodePicker.CAMERA_FACING_BACK);
barcodePicker.startScanning();
scanServiceView.addView(barcodePicker);
return v;
}
}
Fragment2:
public class CMCSMOFragment extends Fragment {
RelativeLayout scanSMOView;
ScanditSDKAutoAdjustingBarcodePicker barcodePicker;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(container == null) {
return null;
}
View v = inflater.inflate(R.layout.cmcsmo_layout, container, false);
scanSMOView = (RelativeLayout)v.findViewById(R.id.scansmoview);
barcodePicker = new ScanditSDKAutoAdjustingBarcodePicker(getActivity(), "<My Scandit SDK Key 2>", ScanditSDKAutoAdjustingBarcodePicker.CAMERA_FACING_BACK);
barcodePicker.startScanning();
scanSMOView.addView(barcodePicker);
return v;
}
}
但是当我构建时,只有Fragment2
显示摄像机视图以进行扫描。 Fragment1
显示黑屏。如果我删除调用Fragment2
的{{1}}代码,Scandit SDK
将正常工作。
我该怎么办?下面的图片是问题屏幕:
答案 0 :(得分:1)
正如评论中所指出的,当您离开片段时,您将需要停止扫描。
这是因为Fragment在简单导航时没有破坏其视图。因此,只要您持续使用该引用,就不会收集对barcodePicker的引用。
相机不允许多个信号源连接到它,因此在尝试在其他地方使用之前,您必须断开连接。