在 onBackPressed() 中使用多个条件 Android
Using multiple conditions in onBackPressed() Android
我正在使用带有 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 个索引,表示您的主页。
我正在使用带有 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 个索引,表示您的主页。