Отключите WEBVIEW для возврата, но включите AlertDialoge для выхода из приложения при нажатии на кнопку - PullRequest
0 голосов
/ 08 октября 2019

У меня есть ситуация, в которой я хочу отключить свой WEBVIEW, чтобы вернуться к нажатой клавише «Назад», но на главном экране я хочу, чтобы мое приложение запрашивало AlertDialog, чтобы спросить меня, нужно ли мне выйти изприложение? Я пробовал это ::

  webView.setOnKeyListener(new View.OnKeyListener()
    {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event)
        {
            if(event.getAction() == KeyEvent.ACTION_DOWN)
            {
                WebView webView = (WebView) v;

                switch(keyCode) {
                    case KeyEvent.KEYCODE_BACK:
                        if (webView.canGoBack()) {
                            //webView.goBack();//

                            return true;
                        } else {

                            AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                            builder.setMessage("Are you sure you want to exit?")
                                    .setCancelable(false)
                                    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                                        public void onClick(DialogInterface dialog, int id) {
                                            finishAffinity(); // Close all activites
                                            System.exit(0);
                                        }
                                    })
                                    .setNegativeButton("No", new DialogInterface.OnClickListener() {
                                        public void onClick(DialogInterface dialog, int id) {
                                            dialog.cancel();
                                        }
                                    });
                            AlertDialog alert = builder.create();
                            alert.show();
                        }
                }
            }
            return false;
        }
    });

`

1 Ответ

0 голосов
/ 08 октября 2019

Вы пытались переопределить onBackPressed на уровне активности?

Обычно это более простой способ изменить поведение кнопки возврата

https://developer.android.com/reference/android/app/Activity#onBackPressed()

например

@Override
    public void onBackPressed() {
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    ...
    }

Обновление:

Думая об этом больше, это, вероятно, вопрос фокуса, веб-обзор не всегда является фокусом ключевых событий.

Это было быЛучше всего обрабатывать диалог выхода из приложения на уровне активности с помощью onBackPressed и не возвращаться на веб-страницы в веб-представлении.

Я не уверен, что использование и onKeyListener является наиболее надежным, как оно естьпредназначен для аппаратных клавиатур. Еще один метод предотвращения возврата веб-просмотра - это очистить историю, как только веб-просмотр завершит загрузку, поэтому возвращать его уже нечего. https://developer.android.com/reference/android/webkit/WebView#clearHistory()

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