在处理onActivityResult时显示AlertDialog的正确方法是什么?

时间:2018-04-21 05:52:07

标签: android android-intent android-alertdialog

我正在使用QR /条形码扫描程序库,其中一个端点为onActivityResult

在阅读结果后,我的格式无效(对我的应用)我如何正确提示AlertDialog。目前,我正在

  

活动com.binscanner。*。scanner。扫描已泄露窗口   最初的DecorView @ 48dd8f3 [连接到服务器时出现问题]   在这里添加

以下是我如何使用Dialog的摘录。

    private AlertDialog showSimpleAlertDialog(String title, String message, final DialogInterface.OnClickListener okListener) {
        AlertDialog alertDialog = new AlertDialog.Builder(QrScan.this).create();
        alertDialog.setCanceledOnTouchOutside(false);

        alertDialog.setTitle(title);
        alertDialog.setMessage(message);
        alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK", okListener);

//      alertDialog.show();
        return alertDialog;
    }



    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        showSimpleAlertDialog("Trouble connecting to server", "Going back main menu", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
             // Go to some other view
            }
        }).show();

    }

我不确定如何使此流程按预期工作。

Intent从库启动以启动扫描程序。当我扫描条形码/ qrcode时,我会onActivityResult。我想要一个AlertDialog出现,但在这个过程中,活动有些不同。我怎样才能让它们正确同步?

2 个答案:

答案 0 :(得分:0)

在显示QRScan之前,您正以某种方式调整Activity dialog。导致Activity退出的原因可能是导致Exception关闭的未处理 Activity

在您dismiss()Dialog创建的onPause()个实例上致电onDestroy()

答案 1 :(得分:0)

此行为的一个可能原因是未处理的方向更改。当您尝试访问相机的QR码时,您的方向可能会根据捕获方法进行更改。这会导致您当前的活动被杀死并重新启动。

尝试自行处理方向配置更改。可以找到这样的教程enter image description here