Android后退按钮冻结了我的UI

时间:2014-11-11 02:35:06

标签: android android-camera zxing barcode-scanner

我有一个我正在使用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
        }
    }
}
  • "取消"无论我点击还是按住后退按钮,语句都会显示在我的日志中。

1 个答案:

答案 0 :(得分:0)

我实际上找到了一个很好的解决方案。我查看了CaptureActivity代码附带的代码。有一个onKeyDown处理程序,带有一个查找后退按钮的开关。我最终覆盖onKeyUp并将后退按钮检测移动到该方法,因此如果按下后退按钮,只有当它按下时,意图才会退出。