我有一个我正在使用ZXING的Capture Activity项目实现的应用程序。一切都运作良好,但我发现了一个古怪的问题。如果我单击界面上的按钮以启动扫描,它将切换到zxing扫描仪。如果我按下后退按钮,它会退出 - 完全没有问题。我偶然发现,如果 - 而不是"攻击"后退按钮,我把它放得太久了,应用程序会回来,但UI上的任何内容都无法点击。
我已登录我的课程,无论我点按还是按住,都会显示同样的EXIT,所以它很奇怪。在应用程序被冻结的时候#34;如果我点击并按住主页按钮,然后将其向上滑动(就像我要进入谷歌搜索一样),然后将其向下滑动(就好像我改变了对谷歌搜索的想法)然后UI不再被冻结,并且我可以再次点击按钮。堆栈或logcat中不会出现错误。以下是一些代码段。希望有人有建议!
// This is what is called when I click my "scan" button.
public void menuScanMember(View view) {
try {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE,PRODUCT_MODE");
startActivityForResult(intent, 0);
} catch (Exception e) {
e.printStackTrace();
}
}
这是在退出意图时(使用后退按钮或扫描)调用的内容
//In the same activity you'll need the following to retrieve the results:
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
p_strScanMemId = intent.getStringExtra("SCAN_RESULT");
String strId = getMemberByMemberId(db, p_strScanMemId);
if (strId != null && !("".equalsIgnoreCase(strId))) {
// If found, send to member info landing page
Intent detailIntent = new Intent(this, MemberDetail.class);
detailIntent.putExtra(EXTRA_MESSAGE, p_strScanMemId);
startActivity(detailIntent);
} else {
// If not found, ask user if they want to create the member account now.
createYesNoDialog("Member Not Found. Register Now?");
}
} else if (resultCode == RESULT_CANCELED) {
Log.v("CANCELLED CANCELLELD", "RESULT CANCELLED");
// Nothing to do here - we'll just exit the activity
}
}
}
答案 0 :(得分:0)
我实际上找到了一个很好的解决方案。我查看了CaptureActivity代码附带的代码。有一个onKeyDown处理程序,带有一个查找后退按钮的开关。我最终覆盖onKeyUp并将后退按钮检测移动到该方法,因此如果按下后退按钮,只有当它按下时,意图才会退出。