我有一个应用程序,我正在执行的捕获活动项目的ZXING。一切都很顺利,但我发现了一个奇怪的问题。如果我点击界面上的一个按钮来启动扫描,它就会切换到zxing扫描仪。如果我按后退按钮,它就会退出--一点问题都没有。我偶然发现,如果-,而不是“点击”后退按钮,我按住它的时间太长,应用程序返回,但用户界面上什么都不能点击。
我在我的类中记录显示,无论我点击还是按住,都会发生相同的出口,所以这很奇怪。当我点击并按住主页按钮时,应用程序就会被“冻结”,然后将其向上滑动(就像我要进入谷歌搜索一样),然后再向下滑动(就好像我改变了对谷歌搜索的想法一样),然后用户界面就不再被冻结,我可以再次点击按钮。堆栈或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
}
}
}发布于 2014-11-11 03:27:21
我找到了一个很好的解决办法。我查看了CaptureActivity代码附带的代码。有一个带有开关的onKeyDown处理程序,用于查找后退按钮。最后,我重写了onKeyUp,并将back按钮检测移到了该方法中,因此,如果按住back按钮,只有当它松开时,它的意图就不再存在。
https://stackoverflow.com/questions/26856531
复制相似问题