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

ser*_*man 0 android webview

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

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

我在Android WebView上找到了问题,如何在应用程序中处理重定向而不是打开浏览器

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

谢谢!

Com*_*are 5

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

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

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

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

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

这是因为只有一个活动,并且BACK按钮不会自动具有带有a的活动的含义WebView.例如,假设活动有两个WebViews- 哪一个会处理?

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

您可以覆盖onBackPressed()(或onKeyDown()用于Android 2.0之前的版本)以在按下硬件BACK键时获得控制权.您可以使用它在WebView历史记录中移回,或者如果没有历史记录,则允许正常处理(finish())发生.

我会建议一个操作栏,允许用户切换到你的应用程序的其他模式.操作栏是Honeycomb的一部分,有一些开源实现可以用于早期版本的Android.