我有一个名为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();**
}
答案 0 :(得分:1)
尝试将finish()
放在returnIntent
的末尾,而不是this.finish()
;