У меня есть активность под названием ScanRouter, которая вызывает сканер ZBar через startActivityForResult. Как только я сканирую код, onActivityResult в ScanRouter обрабатывает результат, передает результат другому действию через намерения, а 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();**
}