在 onBackPressed() 中使用多个条件 Android

Using multiple conditions in onBackPressed() Android

我正在使用带有 WebView 和扩展浮动操作按钮的非常简单的应用程序。

在用户按下后退按钮时,我希望在不同的时间发生 3 种不同的事情:

问题

前两个功能工作正常,第三个功能不工作,即如果我已经在主页上时单击后退按钮并且(&&)FAB 也关闭了,它不会' 显示消息“你想退出吗?”

我做错了什么?

这是我的 MainActivity

    @Override
    public void onBackPressed() {

        WebView myWebView = (WebView) findViewById(R.id.webview);

        if (areAllFabsVisible ) {

            hideFabs();

        }

        if ( myWebView.copyBackForwardList().getCurrentIndex() > 0 && !areAllFabsVisible) {
            myWebView.goBack();
        }



        else if (myWebView.copyBackForwardList().getCurrentIndex() < 0 && !areAllFabsVisible) {

            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setCancelable(false);
            builder.setMessage("Do you want to Exit?");
            builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    //if user pressed "yes", then he is allowed to exit from application
                    finish();
                }
            });
            builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    //if user select "No", just cancel this dialog and continue with app
                    dialog.cancel();
                }
            });
            AlertDialog alert = builder.create();
            alert.show();
        }


        
    }

我认为问题出在这里:


 else if (myWebView.copyBackForwardList().getCurrentIndex() < 0 && !areAllFabsVisible) {


BackForwardList() 的索引不能为负数,所以你应该这样写:

 else if (myWebView.copyBackForwardList().getCurrentIndex() == 0 && !areAllFabsVisible) {

检查您是否在第一页。这意味着您位于第 0 个索引,表示您的主页。