2

使用普通的移动浏览器时,当您按下返回按钮时,它会将您带到上一页。当在我的应用程序中使用 WebView 来显示网页并且用户想要返回上一页时,通常如何完成?按下后退按钮会自动将用户带回上一页还是带他们回到上一个活动?我会假设由于后退按钮通常意味着将用户带到上一个活动,它不应该用于返回到上一个网页。如果是这种情况,我的移动网页是否应该包含用户单击的自己的返回链接?

我想我想做的是了解我应该采用的正确行为。

4

5 回答 5

5

让我们看一些流行的浏览器。目前,在我的设备中,有两个浏览器

  1. 铬合金
  2. 默认互联网浏览器

在这两种浏览器中,它都会转到上一页。所以这是一种常见的行为。这样做

您可以覆盖onBackPressed以转到上一页。

@Override
public void onBackPressed(){
            if(mWebView.canGoBack() == true){
                mWebView.goBack();
            }
            else{
                finish();
            }
}
于 2013-04-17T05:05:58.327 回答
2

请记住,大多数安卓设备都带有后退按钮。因此,您不需要活动中的后退按钮即可返回上一个活动。

关于 webview,如果您希望在 webview 中导航以遍历所有以前的页面,那么您可以放置​​一个后退按钮并使用方法实现 webview 的导航webview.goBack()

简而言之,如果您希望您的用户导航到上一页,那么您应该提供 web 视图的功能以返回上一页,并从第一页用户再次单击后退按钮完成活动。

于 2013-04-17T05:17:35.957 回答
1

您可以使用它覆盖 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);
    }
于 2013-04-17T05:06:12.437 回答
0

当您单击后退按钮时,您正在单击它以打开 webview 更好的方法是在您的布局中提供一个后退按钮..从而保存​​用户打开的最后一个 url

于 2013-04-17T05:06:18.503 回答
0

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();
   }
}
于 2013-04-17T05:08:43.590 回答