在onBackPressed()中使用多个条件



我使用的是一个非常简单的应用程序,有一个WebView和一个扩展的浮动动作按钮。

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

  • 如果扩展FAB是可见的,隐藏它
  • 如果扩展FAB不可见并且(&&)WebView不在BackForwardList的第一个索引上(意思是如果用户不在应用程序的主页上),则返回(意思是在用户到达应用程序的主页之前转到上一页)
  • 如果WebView的索引小于BackForwardList的第一个索引(意思是如果用户在主页上)和(&&)FAB不可见,显示退出应用程序的消息

前两个功能工作正常,第三个,不工作,即,如果我点击后退按钮时,我已经在主页上和(&&) 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个索引,也就是你的主页。

相关内容

  • 没有找到相关文章

最新更新