J'essaie de charger plusieurs pages l'une après l'autre, avec un intervalle de 30 secondes entre chaque chargement. C'est ma classe:Android WebView ne charge pas plusieurs pages
public class MainActivity extends Activity {
private WebView wv;
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
wv = new WebView(this);
wv.setWebViewClient(new WebViewClient());
wv.getSettings().setJavaScriptEnabled(true);
setContentView(wv);
String[] urlArr = {"http://www.google.com", "http://www.cnn.com", "http://www.wired.com"};
int delay = 30 * 1000;
Handler handler = new Handler();
for(int i = 0; i < urlArr.length; i++) {
MyRunnable runnable = new MyRunnable(urlArr[i]);
handler.postDelayed(runnable, delay);
delay = delay + 30 * 1000;
}
}
private class MyRunnable implements Runnable {
private String url;
public MyRunnable(String url) {
this.url = url;
}
public void run() {
wv.loadUrl(url);
Log.d("MainActivity", "PageLoaded: " + url);
}
}
}
Donc, la logique est assez simple: j'ai une seule instance WebView. Ensuite, à l'intérieur du cycle, j'appelle postDelayed()
. Il ne charge que google.com, les deux autres ne sont pas chargés, même si le journal indique "PageLoaded". Y at-il une solution en utilisant le Handler
?
Juste vérifier votre URL de secound est appelée dans votre méthode d'exécution ou non ??? –
Vous ne pouvez pas dire "PageLoaded" ici comme avec wv.loadUrl (url); vous avez seulement demandé au wv de charger cette page. Si vous voulez savoir quand la page est chargée, vous devez implémenter onPageFinished() de votre WebViewClient comme suit: wv.setWebViewClient (new WebViewClient() { public void onPageFinished (WebView webview, String url) { Log.d (" WebViewActivity "," onPageFinished() "+ url); Toast.makeText (WebViewActivity.this," onPageFinished() \ n "+ url, Toast.LENGTH_SHORT) .show(); WebViewActivity.this.setTitle (url); } } et d'utiliser le délai int = 0; pour commencer avec \t \t); – greenapps
Je sais que "PageLoaded" n'est pas le bon moyen de journalisation, comme vous avez suggéré que la page est chargée uniquement lorsque onPageFinished est rappelé. C'était juste pour vérifier que la méthode run() dans MyRunnable a été appelée. – Angelo