如何将此URL加载到WebView中?

时间:2013-09-04 14:49:40

标签: android webview

WebView中加载了一个相当具体的网页,其网址类似于http://www.site.com/mob/(基本上是针对移动设备优化的网页)。此网页仅显示25篇文章,底部显示“更多文章”按钮。

当用户按下它时,我会抓住网址http://www.site.com/Web/MobHomeItems.aspx?page=N(其中N是2,3,4 ......),之后又在同一个屏幕上加载了25个项目。

现在,当我点击某篇文章并转到文章详细信息,然后通过返回键返回页面时,WebView 会忘记已加载了多少篇文章加载默认页面,显示25篇文章。想象一下,如果用户来到第100篇文章,这将是多么令人沮丧。

我尝试覆盖WebClientWebChromeClient中的许多方法,但到目前为止,我无法加载通过“更多文章”按钮加载的N个页面。例如,我首先认为这会有所帮助,但事实并非如此。

        @Override
        public void onLoadResource(WebView view, String url) {

            //http://www.site.com/Web/MobHomeItems.aspx?page=2

            if (url.contains("?page=")) {

                //save this URL for later and on return from 
               // article details, pass it to LoadResource()

            super.onLoadResource(view, url);
        }

然后我尝试了与其他方法类似的方法 - 基本上记住主页上已加载了多少页,然后从文章详细信息返回时,只需告诉webview加载此URL。

任何人都可以帮助我吗?如何将加载的页面附加到主页面?我可以在这里使用JavaScript吗?

PS。加载提到的URL http://www.site.com/Web/MobHomeItems.aspx?page=N没有帮助,因为它只将此具体页面加载到WebView,并且它不会将此第N页附加到主页面。

修改

正如@Raghunandan所问,我没有问题加载回第一页(?page=1)。当用户在文章详细信息上按“返回”按钮时,这是默我想在按文章详细信息之前将加载到用户所在的页面。如果他在?page=100,我想加载回该页面,例如我希望打开25x100篇文章。同样,默认值始终是“打开25篇文章或?page=1http://www.site.com”。

2 个答案:

答案 0 :(得分:1)

覆盖方法shouldOverrideUrlLoading of WebViewClient。

像这样:

public boolean shouldOverrideUrlLoading (WebView view, String url) {
   if (url is kind of article detail) {
       WebView newOne = new WebView(); // create a new Webview for displaying the details.
       view.setVisibility(View.INVISIBLE); // hiding current page (article list)  
       return true; // To tell the WebView we have process this url.
   } 
   return false;
}
  1. 用户点击文章详细信息的一个链接。
  2. shouldOverriderUrlLoading将被触发。
  3. 我们创建了一个新的WebView来打开网址。
  4. 隐藏当前页面
  5. 阅读artical的用户
  6. 用户单击后退键,关闭newOne WebView然后进行 以前的WebView可见。文章列表将立即显示并保留旧陈述

答案 1 :(得分:0)

还有另一种方法可以做到这一点。

WebSettings有一个私有方法“setPageCacheCapacity”,默认值为0,你可以放大它(可能是5)。

您可以使用java的反射来访问此方法。

该方法可以使WebView缓存多个文档。换句话说。当用户按后退键时,WebView将返回旧文档。