我有一个名为 ScanRouter 的活动,它通过 startActivityForResult 调用 ZBar Scanner。扫描代码后,ScanRouter 中的 onActivityResult 会处理结果,通过意图将结果传递给另一个活动,并且 ScanRouter 是“finish()”。
但是,将结果传递给新活动后,如果按下后退按钮,ScanRouter 会重新打开 ZBar。如果我将 ScanRouter 设置为 noHistory=true,则 onActivityResult 不起作用。
如果按下后退按钮,如何防止 ScanRouter 再次触发?我认为 finish() 会将其从堆栈中删除,但这显然不是真的。我想回到最初称为 ScanRouter 而不是 ScanRouter 本身的活动。
ScanRouter:重要的代码部分
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case ZBAR_SCANNER_REQUEST:
case ZBAR_QR_SCANNER_REQUEST:
if (resultCode == RESULT_OK) {
// TODO go back to the caller and give them the result
String value = data.getStringExtra(ZBarConstants.SCAN_RESULT);
**returnIntent(value);**
} else if(resultCode == RESULT_CANCELED && data != null) {
// TODO go back to the caller and give them the error
String error = data.getStringExtra(ZBarConstants.ERROR_INFO);
if(!TextUtils.isEmpty(error)) {
Toast.makeText(this, error, Toast.LENGTH_SHORT).show();
}
}
break;
}
}
protected void returnIntent(String value) {
Intent intent = new Intent(this, Manager.class);
intent.putExtra("operation", caller);
intent.putExtra("code", value);
startActivity(intent);
**this.finish();**
}