【问题标题】:Load multiple URLs in WebView one by oneWebView 中的多个 URL 一个一个加载
【发布时间】:2016-11-22 09:30:48
【问题描述】:

我正在尝试使用单独的类 SearcherMainActivity 上名为 browserWebView 上加载多个 URL。

代码如下:

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();
        }

}

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

【问题讨论】:

  • @VladMatvienko 解决方案有效,谢谢:)
  • 你能提供工作代码吗?你可以编辑你的帖子

标签: javascript java android webview


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多