我想使用ZXing条形码扫描仪作为片段,但是我必须从ZXingScannerFragment
类中提供一个自定义类,以便能够进行OnScanResult()
事件({{3 }})。问题是,现在我无法将此ScannerFragment
转换为Fragment类型变量,因为其类型是ScannerFragment
,是从ZXing.Mobile.ZXingScannerFragment
传递,是从Android.Support.V4.App.Fragment
传递。
我的想法是创建另一个Fragment,并将其所有功能连接到此ScannerFragment
,因此,我可以像具有正常功能的Fragment一样使用ScannerFragment
,同时拥有所有ZXingScannerFragment
的功能。 / p>
嗯,它不起作用。至少在将其添加到布局时不会显示。
我的适配器如下:
public class BetaScannerFragment : Fragment
{
ScannerFragment scannerFragment;
public BetaScannerFragment()
{
scannerFragment = new ScannerFragment();
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return scannerFragment.OnCreateView(inflater, container, savedInstanceState);
}
}
任何想法如何创建这样的适配器?谢谢!
TL; DR:我需要一个像ZXingScannerFragment
答案 0 :(得分:0)
欢迎马赛尔
您可以在片段内使用ZXingScannerView
而不是ZXingScannerFragment
。
并用于实施ZXingScannerView
:
在ZXingScannerView
中定义onCreate
的实例
ZXingScannerView scannerView = new ZXingScannerView(context)
设置其配置
// these are required config for me. you should set what you need! scannerView.setFormats(arrayListOf(BarcodeFormat.CODE_128)); scannerView.setResultHandler(this); scannerView.setAspectTolerance(0.9f); scannerView.startCamera(-1); scannerView.setAutoFocus(true);
将其添加到放置在XML中的FrameLayout
之类的容器中
(barcode_container)
barcode_container.addView(scannerView)
您的片段应实现ZXingScannerView.ResultHandler
并
在handleResult(Result rawResult)
中写下您的逻辑:
try { // play a beeb for successful detection // doSth(rawResult.text) } catch (e: Exception) { e.printStackTrace() // show a failure toast }