使用setResult从活动发送数据不起作用

时间:2016-10-26 21:06:27

标签: android android-fragments android-viewpager

我的设计需要一些帮助...这似乎是错误的。 我有TcpStream,其中包含BaseActivityViewPagerTabLayout中的每个项目都是ViewPager

因此,我的一个片段会打开一个新的Activity,它使用Fragment扫描QRCodes。

当捕获QRCode时,我需要将QRCode数据发送回我的BaseActivity。我听说过使用zxing minimal librarystartActivityForResult(),但它无效。

此外,当它工作时,我需要使用捕获的数据更新我的片段。 这是一些代码(如果需要,我可以提供进一步的代码):

QRCodeListFragment

onActivityResult()

CameraActivity

//qrCodeList is an ArrayList<String>
if (cameraButton != null) {
    cameraButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent cameraActivity = new Intent(getActivity(), CameraActivity.class);
            cameraActivity.putExtra("QRCODE_LIST", qrCodeList);
            cameraActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivityForResult(cameraActivity, 1);
            }
        });
    }

BaseActivity

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

    IntentResult scanResult = IntentIntegrator
        .parseActivityResult(requestCode, resultCode, intent);

    if (scanResult != null) {
        qrCodeList.add(scanResult.getContents());
        onBackPressed();
    }
}

@Override
public void onBackPressed() {
    Intent intent = new Intent();
    intent.putExtra("QRCODE_LIST", qrCodeList);
    setResult(RESULT_OK, intent);
    finish();
}

1 个答案:

答案 0 :(得分:0)

更改代码     startActivityForResult(cameraActivity,1); 至     getActivity()。startActivityForResult(cameraActivity,1);