Как исправить ошибку в диалоге после закрытия и нажать еще раз? - PullRequest
0 голосов
/ 31 января 2019

Я разрабатываю приложение webview , проблема в OnJsAlert в том, что когда я нажимаю на Диалог , он открывается после отклонить егои нажмите еще раз: остановите мое приложение, извините, я не могу решить проблему с отладкой .

Это мой MainActivity.class

@Override
public boolean onJsAlert(WebView view, String url, final String alertSource, final JsResult alertResult) {

    alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

    alertDialog.setContentView(R.layout.activity_alert);

    alertDialog.setCancelable(true);

    TextView alertMessage = alertDialog.findViewById(R.id.alert_text);

    alertMessage.setText(alertSource);

    alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

    alertDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {

        @Override
        public void onCancel(DialogInterface dialog) {

            alertResult.cancel();

        }


    });

    alertDialog.show();

    return true;

}

Отредактировано: Журнал

W / InputEventReceiver: Попытка завершить входное событие, но получатель входного события ужебыл утилизирован.E / ViewRootImpl: sendUserActionEvent () mView == null W / System.err: android.util.AndroidRuntimeException: requestFeature () необходимо вызывать перед добавлением содержимого. W / System.err: at com.android.internal.policy.impl.PhoneWindowДомен.WebViewContentsClientAdapter.handleJsAlert (WebViewContentsClientAdapter.java:606) при com.android.org.chromium.android_webview.AwContentsClientBridge.handleJsAlert (AwContentsClientBridge.java:73) при com.android.org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce (Родной метод)на com.android.org.chromium.base.SystemMessageHandler.handleMessage (SystemMessageHandler.java:27) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:146) в android.app.ActivityThread.main (ActivityThread.java:5641) в java.lang.reflect.Method.invokeNatIve (собственный метод) в java.lang.reflect.Method.invoke (Method.java:515) W / System.err: в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1288) вcom.android.internal.os.ZygoteInit.main (ZygoteInit.java:1104) в dalvik.system.NativeStart.main (собственный метод) A / libc: фатальный сигнал 6 (SIGABRT) в 0x00002c6d (код = -6), поток11373 (xcoder.stepview) Приложение закрыто.

1 Ответ

0 голосов
/ 31 января 2019

Ваш alertDialog создан до вызова метода public boolean onJsAlert(...), и когда он вызывается во второй раз, вы получаете AndroidRuntimeException: requestFeature() must be called before adding content, потому что вы не можете использовать requestWindowFeature() с созданным диалогом.Вы должны создать новый экземпляр диалогового окна в этом методе или повторно использовать глобально определенный диалог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...