使用普通的移动浏览器时,当您按下返回按钮时,它会将您带到上一页。当在我的应用程序中使用 WebView 来显示网页并且用户想要返回上一页时,通常如何完成?按下后退按钮会自动将用户带回上一页还是带他们回到上一个活动?我会假设由于后退按钮通常意味着将用户带到上一个活动,它不应该用于返回到上一个网页。如果是这种情况,我的移动网页是否应该包含用户单击的自己的返回链接?
我想我想做的是了解我应该采用的正确行为。
使用普通的移动浏览器时,当您按下返回按钮时,它会将您带到上一页。当在我的应用程序中使用 WebView 来显示网页并且用户想要返回上一页时,通常如何完成?按下后退按钮会自动将用户带回上一页还是带他们回到上一个活动?我会假设由于后退按钮通常意味着将用户带到上一个活动,它不应该用于返回到上一个网页。如果是这种情况,我的移动网页是否应该包含用户单击的自己的返回链接?
我想我想做的是了解我应该采用的正确行为。
让我们看一些流行的浏览器。目前,在我的设备中,有两个浏览器
在这两种浏览器中,它都会转到上一页。所以这是一种常见的行为。这样做
您可以覆盖onBackPressed
以转到上一页。
@Override
public void onBackPressed(){
if(mWebView.canGoBack() == true){
mWebView.goBack();
}
else{
finish();
}
}
请记住,大多数安卓设备都带有后退按钮。因此,您不需要活动中的后退按钮即可返回上一个活动。
关于 webview,如果您希望在 webview 中导航以遍历所有以前的页面,那么您可以放置一个后退按钮并使用方法实现 webview 的导航webview.goBack()
。
简而言之,如果您希望您的用户导航到上一页,那么您应该提供 web 视图的功能以返回上一页,并从第一页用户再次单击后退按钮完成活动。
您可以使用它覆盖 onkeydown 事件并检查按下的键(在这种情况下是返回键)并检查是否有任何上一页
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_DOWN){
switch(keyCode)
{
case KeyEvent.KEYCODE_BACK:
if(yourWebView.canGoBack() == true){
yourWebView.goBack();
}else{
finish();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
当您单击后退按钮时,您正在单击它以打开 webview 更好的方法是在您的布局中提供一个后退按钮..从而保存用户打开的最后一个 url
WebView 活动中的类似内容:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_DOWN){
switch(keyCode)
{
case KeyEvent.KEYCODE_BACK:
if(yourWebView.canGoBack() == true){
yourWebView.goBack();
}else{
finish();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
或覆盖 onBackPressed 方法:
@Override
public void onBackPressed() {
if(yourWebView.canGoBack() == true){
yourWebView.goBack();
} else {
finish();
}
}