Android:结果通过后完成ZBar Scanner

时间:2013-06-25 18:24:53

标签: android activity-finish zbar

我有一个名为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();**
}

1 个答案:

答案 0 :(得分:1)

尝试将finish()放在returnIntent的末尾,而不是this.finish();