2011-02-10 39 views
0

民间 我有一个活动,启动一个嵌入式浏览器视图渲染的东西,超出了我的控制。现在假设用户通过点击浏览器视图中的链接导航一个级别。这将打开一个新的浏览器窗口。为了让用户回到以前的活动,用户必须点击“两次”。在嵌入式浏览器中的android后退按钮webview

我想实现一个总是显示在嵌入式浏览器视图顶部的“软”返回按钮。

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

回答这个问题,但我在使用该解决方案,Android原生按钮也需要你直接返回到之前的活动(而不是回去在页面的历史)。有没有办法让我可以同时做这两件事(有一个自定义后退按钮,可以让我一路回到原来的位置,但是android原生背面会保留一次返回一页的预期行为?

谢谢!

回答

5

我想实现“软”后退按钮总是在嵌入式浏览器视图的顶部显示出来

这将是你当前的实现毫无意义正如你状态:。

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

注意这里的关键短语是“新的浏览器窗口”,指的是用户默认选择的浏览器应用程序。你不能“实现一个总是显示在用户默认选择的浏览器应用程序顶部的'软'后退按钮。虽然您可以将ButtonWebView并置,但Button只有在包含WebView的活动处于可见状态时才会显示,用户可以按下普通硬件BACK按钮退出该活动。

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

这是因为只有一个活动,并且后退按钮不能自动为具有WebView的活动赋予含义。例如,假设活动有两个WebViews - 哪一个可以BACK处理?

有没有办法让我既可以做(有一个自定义后退按钮把我带回到所有的方式,但有Android原生回保留在时光倒流一页预期的行为?

您可以覆盖onBackPressed()(用于或onKeyDown()预安卓2.0),以获得控制按下硬件BACK键时,你可以用它来在WebView历史回迁,或者如果没有历史,允许正常处理(finish())发生。

我会推荐一个action bar允许用户切换到您的应用程序的其他模式。动作栏是Honeycomb的一部分,并且您可以使用open source implementations以用于早期版本的Android。

+0

Thanx CommonWare。我认为你回答了我的大部分问题。我会将此标记为现在的正确答案。 – serverman 2011-02-10 17:59:33