我的设计需要一些帮助...这似乎是错误的。
我有TcpStream
,其中包含BaseActivity
和ViewPager
。 TabLayout
中的每个项目都是ViewPager
。
因此,我的一个片段会打开一个新的Activity,它使用Fragment
扫描QRCodes。
当捕获QRCode时,我需要将QRCode数据发送回我的BaseActivity。我听说过使用zxing minimal library
和startActivityForResult()
,但它无效。
此外,当它工作时,我需要使用捕获的数据更新我的片段。 这是一些代码(如果需要,我可以提供进一步的代码):
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();
}
答案 0 :(得分:0)
更改代码 startActivityForResult(cameraActivity,1); 至 getActivity()。startActivityForResult(cameraActivity,1);