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

В Android Studio я использовал WebView.Поэтому, если пользователь нажимает кнопку «Назад», я хочу показать подтверждающее сообщение перед закрытием приложения.

Это мой текущий код, который я использовал, но он не работает каждый раз

public void onBackPressed() {
    new AlertDialog.Builder(this)
            .setMessage("Are you sure you want to exit?")
            .setCancelable(false)
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    finish();
                }
            })
            .setNegativeButton("No", null)
            .show();
}

Ответы [ 4 ]

0 голосов
/ 03 октября 2018
 @Override
    public void onBackPressed() {
        if (webView.canGoBack()) {
            // If web view have back history, then go to the web view back history
            webView.goBack();
        } else {
            // Ask the user to exit the app or stay in here
            exitApp();
        }
    }


public void exitApp() {
        final AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
        builder.setTitle("Please confirm");
        builder.setMessage("Do you want to exit the app?");
        builder.setCancelable(true);

        builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
               finish();
            }
        });

        builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
            }
        });

        // Create the alert dialog using alert dialog builder
        AlertDialog dialog = builder.create();

        // Finally, display the dialog when user press back button
        dialog.show();
    }
0 голосов
/ 03 октября 2018

Приведенный выше код работает нормально.Если вы хотите перейти назад к предыдущей странице, используйте ниже один.

@Override
public void onBackPressed() {
  if (mWebView.canGoBack()) {
          mWebView.goBack();
  }else{
        new AlertDialog.Builder(this)
          .setMessage("Are you sure you want to exit?")
          .setCancelable(false)
          .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
              public void onClick(DialogInterface dialog, int id) {
                   super.onBackPressed();
              }
          })
          .setNegativeButton("No", null)
          .show();
  }
}
0 голосов
/ 03 октября 2018

enter image description here

Можете попробовать с этим.Надеюсь, что это работает

0 голосов
/ 03 октября 2018

Вы должны вызвать метод подтверждения сообщения в своей деятельности onBackPressed Метод

    @Override 
    public void onBackPressed() {
      if (mWebView.canGoBack()) {
          mWebView.goBack();
      } else {
        onBackPressed() // This is Your Confirmation Dialog method
      }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...