嵌入式浏览器webview中的android后退按钮

时间:2011-02-10 00:46:53

标签: android webview

民间 我有一个活动启动嵌入式浏览器视图渲染不受我控制的东西。现在假设用户通过单击浏览器视图中的链接来导航一个级别。这将打开一个新的浏览器窗口。为了使用户返回先前的活动,用户必须再次点击"两次"。

我想实现一个" soft"后退按钮始终显示在嵌入式浏览器视图的顶部。

我在Android WebView, how to handle redirects in app instead of opening a browser

找到了问题

但是当我使用该解决方案时,android原生按钮还会将您直接带回到之前的活动(而不是回到页面的历史记录中)。有没有办法让我可以做到这两点(有一个自定义后退按钮,让我一直回来,但让原生的本机后退保留了一次返回一页的预期行为?

谢谢!

1 个答案:

答案 0 :(得分:5)

  

我想实现一个“软”后退按钮,它始终显示在嵌入式浏览器视图的顶部。

这在您当前的实施中毫无意义。如你所述:

  

现在假设用户通过单击浏览器视图中的链接再导航一个级别。这将打开一个新的浏览器窗口。

注意这里的关键短语是“新的浏览器窗口”,指的是用户默认选择的浏览器应用程序。你不能“实现'软'后退按钮,它始终显示在用户默认选择的浏览器应用程序的顶部。虽然您可以在Button旁放置WebView,但Button仅在包含WebView的活动可见时才会显示,并且用户可以按普通硬件按BACK按钮退出该活动。

  

但是当我使用该解决方案时,android原生按钮还会将您直接带回到之前的活动(而不是回到页面的历史记录中)。

这是因为只有一个活动,而BACK按钮不会自动具有WebView活动的含义。例如,假设活动有两个WebViews - 哪个会回来处理?

  

有没有办法让我可以同时做到这两种方式(有一个自定义后退按钮可以让我一直回来,但让原生的本机后退保留了一次回到一页的预期行为?

您可以覆盖onBackPressed()(或onKeyDown() for pre-Android 2.0)以在按下硬件BACK键时获得控制权。您可以使用它在WebView历史记录中返回,或者如果没有历史记录,则允许正常处理(finish())。

我建议action bar允许用户切换到应用的其他模式。操作栏是Honeycomb的一部分,并且open source implementations可以用于早期版本的Android。