2015-05-08 2 views
3

У меня есть два Fragments и в одном из них я хочу иметь QRcode сканера (с использованием ZXingScannerView). Однако камера не запускается, и все, что я вижу, это черный экран. Вот моя реализация:Невозможно запустить сканер QRcode камеры в фрагменте

QRCodeReaderFragment.java

private ZXingScannerView mScannerView; 
private LinearLayout qrCameraLayout; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View fragmentView = inflater.inflate(R.layout.fragment_qr_code_reader, container, false); 

    qrCameraLayout = (LinearLayout) fragmentView.findViewById(R.id.ll_qrcamera); 

    mScannerView = new ZXingScannerView(getActivity().getApplicationContext()); 

    mScannerView.setLayoutParams(new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.MATCH_PARENT, 
      LinearLayout.LayoutParams.MATCH_PARENT)); 

    qrCameraLayout.addView(mScannerView); 

    return fragmentView; 
} 

fragment_qr_code_reader.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.letsguang.android.shoppingmalltenant.fragment.QrCodeReaderFragment" 
    android:id="@+id/fl_qrcamera" 
    > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/ll_qrcamera" 
     android:orientation="vertical"> 




    </LinearLayout> 

</FrameLayout> 

ответ

2

Вы не сделали настройки вида. Согласно документации от https://github.com/dm77/barcodescanner вы должны запустить/остановить камеру в onResume/OnPause:

@Override 
public void onResume() { 
    super.onResume(); 
    mScannerView.setResultHandler(this); 
    mScannerView.startCamera(); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    mScannerView.stopCamera(); 
} 
0

Scannerview должен быть запущен в onResume и должен быть остановлен в , он не должен быть запущен в onCreate.

Смежные вопросы