民间 我有一个活动启动嵌入式浏览器视图渲染不受我控制的东西。现在假设用户通过单击浏览器视图中的链接来导航一个级别。这将打开一个新的浏览器窗口。为了使用户返回先前的活动,用户必须再次点击"两次"。
我想实现一个" soft"后退按钮始终显示在嵌入式浏览器视图的顶部。
我在Android WebView, how to handle redirects in app instead of opening a browser
找到了问题但是当我使用该解决方案时,android原生按钮还会将您直接带回到之前的活动(而不是回到页面的历史记录中)。有没有办法让我可以做到这两点(有一个自定义后退按钮,让我一直回来,但让原生的本机后退保留了一次返回一页的预期行为?
谢谢!
答案 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。