【问题标题】:android back button in an embedded browser webview嵌入式浏览器webview中的android后退按钮
【发布时间】:2011-02-10 00:46:53
【问题描述】:

伙计们 我有一个活动可以启动嵌入式浏览器视图渲染我无法控制的东西。现在假设用户通过单击浏览器视图中的链接又导航了一个级别。这将打开一个新的浏览器窗口。为了让用户回到之前的活动,用户必须点击“两次”返回。

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

我在Android WebView, how to handle redirects in app instead of opening a browser找到了这个问题的答案

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

谢谢!

【问题讨论】:

    标签: android webview


    【解决方案1】:

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

    这在您当前的实施中将毫无意义。正如您所说:

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

    注意这里的关键词是“新的浏览器窗口”,指的是用户默认选择的浏览器应用程序。您不能“实现一个始终显示在顶部的‘软’后退按钮”用户默认选择的浏览器应用程序。虽然您可以在您的WebView 旁边放置一个Button,但只有当包含WebView 的活动存在时,Button 才可见,并且用户可以按下普通硬件“返回”按钮退出该活动。

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

    这是因为只有一个活动,并且“返回”按钮不会自动对具有WebView 的活动有意义。例如,假设活动有两个WebViews——BACK 会处理哪一个?

    有没有办法让我两者都做(有一个自定义的后退按钮让我一路返回,但让 android 原生返回保留一次返回一页的预期行为?

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

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

    【讨论】:

    • 感谢 CommonWare。我想你回答了我的大部分问题。我暂时将其标记为正确答案。
    猜你喜欢
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    相关资源
    最近更新 更多