2013-04-17 110 views
2

使用普通移动浏览器时,当您按下“后退”按钮时,会将您带到上一页。当在我的应用程序中使用WebView来显示网页并且用户想要返回到上一页时,通常会做什么?按下“后退”按钮会自动将用户带回上一页还是将它们带回到先前的活动?我会假设由于后退按钮通常意味着要将用户带到先前的活动,因此不应该使用它返回到以前的网页。如果是这种情况,我的移动网页是否应该包含用户点击的自己的后退链接?在Android的webview中使用“后退”按钮

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

+0

刚刚海事组织,它会更好(根据最小惊喜的原则)去上一个网页;这是Android股票浏览器的功能(无论如何,在我的2.1手机上),所以用户会期待这一点。 – michaelb958

+0

但是,如果用户通常期望后退按钮将他们带到以前的活动,那不是不正常的行为? – AndroidDev

+0

取决于。当我在Android网络浏览器中时,*我*期望后退按钮将我带回网页。 – michaelb958

回答

2

请记住,后退按钮与大多数Android设备的到来。因此,您的活动中不需要返回按钮即可返回到之前的活动。

关于webview如果你想在webview中导航浏览所有以前的页面,那么你可以放一个后退按钮并使用方法webview.goBack()实现webview的导航。

总之,如果你希望你的用户导航到上一页,那么你应该给webview的功能返回到上一页,并从第一页用户点击返回按钮再次完成活动。

+0

我其实是考虑将Back按钮作为网页内容的一部分,但是通过使用Button控件并使用它来向后导航,您的解决方案会更好。这仍然允许用户使用硬件后退按钮返回到上一个活动。 – AndroidDev

5

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

  1. 默认的Internet浏览

在这两种浏览器,它会到前一页。所以这是一种常见的行为。要做到这一点

你可以覆盖onBackPressed去你的上一页。

@Override 
public void onBackPressed(){ 
      if(mWebView.canGoBack() == true){ 
       mWebView.goBack(); 
      } 
      else{ 
       finish(); 
      } 
} 
+0

谢谢,但我没有问*如何实现后退按钮。我期待了解是否应该使用它来转到上一页或之前的活动。 – AndroidDev

+0

我认为使用后退按钮可以实现后台导航。由于有很多浏览器可以做到这一点 – stinepike

+0

看到我编辑的答案 – stinepike

1

您可以使用,如果有任何以前的页面

@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); 
    } 
+0

请参阅我对StinePike的评论。 – AndroidDev

0

当您单击后退按钮此覆盖的onkeydown事件,并检查按下的键(在这种情况下是返回键),并检查,你点击它正在打开的WebView更好的事情是给一个后退按钮在你layout..and因此节省用户打开

+0

我不明白。您是否说要使用“返回”按钮返回到上一个活动或以前的网页? – AndroidDev

+0

只需保存上次打开的网址并在后退按钮上打开该网址即可,因此用户会感觉到他正在重新定向到后台页面。 – maddy

+0

这不是我要求的。再次阅读问题。我正在寻找用户期望的正确行为,而不是编码解决方案。 – AndroidDev

0

像这样的事情在活动与WebView中的最后一个URL活动:

@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(); 
    } 
}