在WebView中逐个加载多个URL

时间:2016-11-22 09:30:48

标签: javascript java android webview

我正在尝试使用单独的班级WebViewbrowser上的MainActivity Searcher上加载多个网址。

以下是代码:

import java.util.ArrayList;
import java.util.List;

import static com.myuser.hplap.myapp.MainActivity.browser;

public class Searcher {
    static List<String> keywords;

    Searcher() {
        populate();
        search();
    }

    void populate() {
        keywords = new ArrayList<String>();
        keywords.add("how to cook rice");
        keywords.add("how to sing");
        keywords.add("how to dance");
    }

    void search() {
        for (String kw : keywords)
            browser.loadUrl("https://www.google.co.in/search?q=" + "buy+" + kw.replace(' ', '+'));
    }
}

我打算简单地调用这个类的构造函数,让一切都自动完成。

但是循环运行得太快,因此browser只能加载最后一个URL。

我只是将加载的网页的HTML代码复制到MainActivity中的字符串中,所以我不需要将页面加载很长时间。

以下是MainActivity的代码:

public class MainActivity extends AppCompatActivity {

    static String code;
    static WebView browser;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        browser = (WebView) findViewById(R.id.browser);
        browser.getSettings().setJavaScriptEnabled(true);

            /* An instance of this class will be registered as a JavaScriptInterface interface */
            class MyJavaScriptInterface {
                @JavascriptInterface
                @SuppressWarnings("unused")
                public void processHTML(String html) {
                    code = html;

                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            count.setText(String.valueOf(totalProducts));
                            }
                        }
                    });
                }
            }

            browser.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");

            browser.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageFinished(WebView view, String url) {
                    progressBar.setVisibility(View.GONE);
                    browser.loadUrl("javascript:HTMLOUT.processHTML(document.documentElement.outerHTML);");
                }
            });

            /* load a web page */
            new Searcher();
        }

}

我希望有人能在这里帮助我。 感谢您阅读到目前为止:)

1 个答案:

答案 0 :(得分:1)

您应该在仅调用onPageFinished后加载下一页。所以我要说你的Searcher还需要一个像loadNext()这样的方法,这个方法会在加载完这个后加载下一页

相关问题