【问题标题】:I want to Implement the QRcode Scanner in Fragment but the setContentView is showing Error我想在 Fragment 中实现 QRcode 扫描仪,但 setContentView 显示错误
【发布时间】:2018-01-17 12:17:12
【问题描述】:
public class EarnFragment extends Fragment {

    private Button scan;
    private ZXingScannerView scannerview;

    public EarnFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(final LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v= inflater.inflate(fragment_earn, container, false);

        scan = (Button)v.findViewById(R.id.scan);
        scan.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                scannerview=new ZXingScannerView(getActivity());
                setContentView(scannerview);
                scannerview.startCamera();
                scannerview.setResultHandler(new ZXingScannerView.ResultHandler() {
                    @Override
                    public void handleResult(Result result) {
                        String resultcode=result.getText();
                        Toast.makeText(getActivity(),resultcode, Toast.LENGTH_SHORT).show();
                    }
                });

               // Toast.makeText(getActivity(),"Ok",Toast.LENGTH_SHORT).show();
            }
        });

        return  v;
    }
}

SetContentViewFragments 中不起作用,为什么? ReplacementsetCOntentView 是什么?

【问题讨论】:

    标签: android android-layout android-fragments fragment android-fragmentactivity


    【解决方案1】:

    你可以这样做

    @Override
    public View onCreateView(final LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v= inflater.inflate(fragment_earn, container, false);
    
        IntentIntegrator integrator = new IntentIntegrator(getActivity());
        integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
        integrator.setPrompt("Scan a QRCode");
        integrator.setCameraId(0);  // Use a specific camera of the device
        integrator.setBeepEnabled(false);
        integrator.setBarcodeImageEnabled(true);
    
        scan = (Button)v.findViewById(R.id.scan);
        scan.setOnClickListener(new View.OnClickListener() {
    
            @Override
            public void onClick(View view) {
                integrator.initiateScan();
    
            }
        });
    

    并添加 onActivityResult()

    protected void onActivityResult(final int requestCode, int resultCode, Intent data) {
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if (result != null) {
            if (resultCode != 3 && resultCode != 0 && result.getContents() != null) {      
                new Thread(new Runnable() {
                    public void run() {
                        // do something
                              }
    
                }).start();
              }
    
            else if (result.getContents() == null) {
                Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
            }
    
    }
    }
    

    并添加这个依赖

    compile 'com.journeyapps:zxing-android-embedded:3.4.0'
    

    【讨论】:

    • 在这对我来说 IntentIntegrator 显示错误如何解决? @Karmelina 迈克尔
    • IntentIntegrator 完全显示红色它没有导入 IntentIntegrator,对于 IntentIntegator ,我们是否要为此编写任何方法?
    • 你是否像我上面提到的那样在你的 gradle 文件中添加了这个依赖项?编译 'com.journeyapps:zxing-android-embedded:3.4.0'
    • 是的,我有它@Karmelina Michael
    • 尝试添加这些compile 'com.google.zxing:core:3.2.1' compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 2015-07-19
    • 2015-10-02
    相关资源
    最近更新 更多