Search code examples
android-studiozbar

onActivityResult not called in Fragment


In my fragment onActivityResult is not calling after startActivityForResult .As i have tried following things: 1) adding getParentFragment , getActivity before startActivityResult

2) added on manifest android:configChanges="orientation|screenSize"

3)onActivityResult is not being called in Fragment

4)Checked finish () method in ZbarScanner Activity

Intent dataIntent = new Intent();
                    dataIntent.putExtra(SCAN_RESULT, symData);
                    dataIntent.putExtra(SCAN_RESULT_TYPE, sym.getType());
                    setResult(Activity.RESULT_OK, dataIntent);
                    finish();

5) Error- [ResultInfo{who=null, request=196609, result=-1, data=Intent { (has extras) }}]} checked intent has value not null which we are passing

if (isCameraAvailable()) {
                    Intent intent = new Intent(this.getActivity(), ZBarScannerActivity.class);
                    intent.putExtra(ZBarConstants.SCAN_MODES, new int[]{Symbol.QRCODE});

                  startActivityForResult(intent, 1);


                    Toast.makeText(getActivity(), "inside case", Toast.LENGTH_SHORT).show();


                } else {
                    Toast.makeText(getActivity(), "Rear Facing Camera Unavailable", Toast.LENGTH_SHORT).show();
                }

----onActivityResult------

  @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {

            super.onActivityResult(requestCode, resultCode, data);
            Bundle bundle = data.getExtras();


            switch (requestCode) {
                case ZBAR_SCANNER_REQUEST:
                case ZBAR_QR_SCANNER_REQUEST:
                    if (resultCode == getActivity().RESULT_OK) {


                        Toast.makeText(getActivity(), "Scan Result = " + data.getStringExtra(ZBarConstants.SCAN_RESULT), Toast.LENGTH_SHORT).show();

                    } else if (resultCode == getActivity().RESULT_CANCELED && data != null) {
                        String error = data.getStringExtra(ZBarConstants.ERROR_INFO);
                        if (!TextUtils.isEmpty(error)) {
                            Toast.makeText(getActivity(), error, Toast.LENGTH_SHORT).show();
                        }
                    }}

Solution

  • I called onActivityResult on MainActivity and with this its not calling .so removed switch case .and its working now

    switch (requestCode) {
                case ZBAR_SCANNER_REQUEST:
                case ZBAR_QR_SCANNER_REQUEST: