这是主要部分:
import android.content.Intent;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
public class ScanActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scan);
}
@Override
protected void onResume() {
super.onResume();
IntentIntegrator scanIntegrator = new IntentIntegrator(ScanActivity.this);
scanIntegrator.setOrientationLocked(false);
scanIntegrator.initiateScan();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (scanResult != null){
String strResult = scanResult.getContents();
Intent iii = new Intent(ScanActivity.this, ScanResultActivity.class);
iii.putExtra("scan_result", strResult);
startActivity(iii);
}
}
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
}
如果您处于ScanActivity中,则该应用程序将在扫描后立即显示ScanResultActivity,这与预期的一样。唯一的问题是,按返回键时应用程序不会退出。相反,它将跳至ScanResultActivity。当然,扫描结果为空。
如何在扫描运行时按Back键退出应用程序?
答案 0 :(得分:0)
此方法
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
应该这样调用super方法
@Override
public void onBackPressed() {
super.onBackPressed();
}
答案 1 :(得分:0)
问题:此代码段使您的代码无法按预期工作
@Override
protected void onResume() {
super.onResume();
IntentIntegrator scanIntegrator = new IntentIntegrator(ScanActivity.this);
scanIntegrator.setOrientationLocked(false);
scanIntegrator.initiateScan();
}
因为当您按下ScanResultActivity
中的返回键时,
[*] 。 onResume
的{{1}}方法将在ScanActivity
之后被调用。届时后退堆栈将是。
ScanActivity-> ScanResultActivity-> ScanActivity
如果按返回键(当前活动为onActivityResult
),将显示ScanActivity
,然后如果再次按返回键(当前活动为ScanResultActivity
),则步骤 [*] 将重复。从现在开始,您的应用将一次又一次地重复,并且您将无法永远退出当前的Backstack。
解决方案:这是我的建议解决方案:
[1]。仅在初次创建ScanResultActivity
时和用户从ScanActivity
按返回键时显示扫描屏幕。
[2]。如果用户在ScanResultActivity
上按返回键,则退出/结束当前的堆栈。
ScanActivity