我正在尝试使用单独的班级WebView
在browser
上的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();
}
}
我希望有人能在这里帮助我。 感谢您阅读到目前为止:)
答案 0 :(得分:1)
您应该在仅调用onPageFinished
后加载下一页。所以我要说你的Searcher
还需要一个像loadNext()
这样的方法,这个方法会在加载完这个后加载下一页