首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android: WebView的方法goBack()显示了一个空白页面

Android: WebView的方法goBack()显示了一个空白页面
EN

Stack Overflow用户
提问于 2010-08-26 11:36:30
回答 5查看 7.5K关注 0票数 11

我有一个android应用程序,它在一个带有WebView的活动中加载网页。我使用手动检索页面,并使用WebView的loadDataWithBaseURL将其显示在屏幕上。那里的一切都很好。

现在,我正在尝试重写Back按钮按下,以模拟回到WebView历史堆栈中。我能够重写后退按钮,我可以看到WebView中有一个历史堆栈,我可以看到历史url是正确的,但是当我调用WebView的goBack()方法时,它会显示一个空白页。

有没有人在此之前遇到过这种情况,或者给我几条建议,从这个角度出发?

编辑:如果我使用WebView的loadUrl方法,带有覆盖的Back按钮将按预期工作。但为什么..。如果我需要手动处理这个问题,我如何开始处理历史页面?

EN

Stack Overflow用户

发布于 2017-04-01 18:19:43

我处理这一问题的方法是在使用loadDataWithBaseURL加载根页面之后保留一个本地堆栈指针,指向加载的页面数。返回时,如果指针命中1,则处于根级,并使用loadDataWithBaseURL重新加载根页面。

FYI,我在带有片段的活动中使用这段代码,因此片段实现了接口IBackButtonListener,它帮助我捕获主活动中的后退按钮,并将事件传播到当前片段。如果片段返回true,则意味着它已经处理了该事件。

IBackbuttonListener.java

代码语言:javascript
运行
复制
public interface IBackButtonListener {
    public boolean onBackButtonPressed();
}

实现IBackButtonListener并从html数据加载一个webview的片段。

代码语言:javascript
运行
复制
    private int historyStackPointer = 0;

    ...

         @Override
            public boolean onBackButtonPressed() {
                boolean rtn = false;

                if (webView.canGoBack()) {
                    if(historyStackPointer > 1) {
                        webView.goBack();
                        historyStackPointer--;
                        rtn = true;
                    }else{
                        if(historyStackPointer == 1) {
                            // Reload the html data 
                            webView.loadDataWithBaseURL("file:///android_asset/", html_data, "text/html", "UTF-8", null);
                            historyStackPointer = 0;
                            rtn = true;
                        }else{
                            webView.loadUrl("about:blank");
                            rtn = false;
                        }
                    }
                } else {
                    rtn = false;
                }
                return rtn;
            }

html_data是一个带有页面html的字符串。

票数 0
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3574674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档