【发布时间】:2016-11-22 09:30:48
【问题描述】:
我正在尝试使用单独的类 Searcher 在 MainActivity 上名为 browser 的 WebView 上加载多个 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