簡體   English   中英

onActivityResult()未在片段中調用

[英]onActivityResult() is not calling in fragment

我想分段掃描QR Code。

但是onActivityResult沒有調用。

Fragment.java

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

        scanOffer = view.findViewById( R.id.scanOffer );

        scanOffer.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                scanBarcode();
            }
        } );

        return view;
    }

public void scanBarcode() {
        /** This method will listen the button clicked passed form the fragment **/
        Intent intent = new Intent(getContext(),CaptureActivity.class);
            intent.setAction("com.google.zxing.client.android.SCAN");
            intent.putExtra("SAVE_HISTORY", false);
            startActivityForResult(intent, 0);
    }


@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == 0) {
            if (resultCode == Activity.RESULT_OK) {
                uniqueCode = data.getStringExtra("SCAN_RESULT");
                Log.d(TAG, "contents: " + uniqueCode);
                Toast.makeText( getContext() ,uniqueCode ,Toast.LENGTH_SHORT ).show();
//                callAddStoreContestParticipantService();
            } else if (resultCode == Activity.RESULT_CANCELED) {
                Log.d(TAG, "RESULT_CANCELED");
            }
        }
    }

請幫我。

onActivityResult()沒有調用

CaptureActivity.class在掃描onActivityResult()未調用后打開Qr

嘗試下面的代碼進行條形碼掃描,並在父活動中覆蓋活動結果

    private static final int BARCODE_REQUEST = 312;
private void startBarcode() {
    //IntentIntegrator.forFragment(getActivity().initiateScan()); // `this` is the current Fragment

    IntentIntegrator integrator = new IntentIntegrator(getActivity()) {
        @Override
        protected void startActivityForResult(Intent intent, int code) {
          Fragment.this.startActivityForResult(intent, BARCODE_REQUEST); // REQUEST_CODE override
        }
    };
    //IntentIntegrator integrator = new IntentIntegrator(getActivity());
    //IntentIntegrator.forSupportFragment(this);
    integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES);
    integrator.setPrompt("Scan a barcode");
    integrator.setCameraId(0);  // Use a specific camera of the device
    integrator.setBeepEnabled(true);
    integrator.setBarcodeImageEnabled(true);
    integrator.setOrientationLocked(false);
    integrator.setTimeout(15000);
    integrator.initiateScan();
}

   @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {

        case BARCODE_REQUEST:
            IntentResult Result = IntentIntegrator.parseActivityResult(IntentIntegrator.REQUEST_CODE, resultCode, data);
            if (Result != null) {
                if (Result.getContents() == null) {
                    Timber.i("cancelled scan");
                    showSnackbar("cancelled scan", true);

                } else {
                    Timber.i("Scanned");
                    showSnackbar("Code scan successfully", false);


                    try {


        long id = Long.parseLong(Result.getContents());
//                            getFood(id);

                            searchBarcode(Result.getContents());
                        } catch (Exception e) {
                            e.printStackTrace();
                        }


//                    searchBarcode(Result.getContents());
                        //getFood(Long.valueOf(mItem.get(position - 1).getID()));
                    }
                } else {
                    showSnackbar("Barcode not scanned", true);
                    Timber.i("Barcode Result is NULL");
                    super.onActivityResult(requestCode, resultCode, data);
                }
                break;
        }

    }

您可以從以下示例中獲取參考: 條形碼掃描儀

您必須調用getActivity().startActivityForResult(intent, 0); 在片段和活動中,您必須在onActivityResultMethod()中調用yourfragmnt.onActivityResult()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM