Existe-t-il un meilleur moyen de rafraîchir WebView?

D’accord. J’ai regardé PARTOUT et mon petit cerveau n’arrive pas à comprendre une meilleure façon de rafraîchir une activité. Toutes les suggestions que je peux comprendre seraient formidables. 🙂

Voici le code java:

package com.dge.dges; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.webkit.WebView; import android.widget.Button; public class dgeActivity extends Activity { WebView mWebView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mWebView = (WebView) findViewById(R.id.webview); mWebView.getSettings(); mWebView.loadUrl("http://www.websitehere.php"); Button newButton = (Button)findViewById(R.id.new_button); newButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(dgeActivity.this, dgeActivity.class); startActivity(intent); } }); } } 

Et voici le main.xml

     

Je n’aime pas l’idée de ré-emstackr l’activité après l’activité. Il doit exister un moyen plus simple d’actualiser la vue Web. S’il vous plaît aider. 🙂

1) Si vous souhaitez recharger la même URL:

 mWebView.loadUrl("http://www.websitehere.php"); 

donc le code complet serait

 newButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { dgeActivity.this.mWebView.loadUrl("http://www.websitehere.php"); }}); 

2) Vous pouvez également appeler mWebView.reload() mais sachez que cela repositionne une page si la requête était POST, et ne fonctionne donc correctement qu’avec GET.

Vous pouvez appeler un mWebView.reload(); C’est ça

La meilleure solution consiste à faire simplement webView.loadUrl( "javascript:window.location.reload( true )" ); . Cela devrait fonctionner sur toutes les versions et n’introduit pas de nouvelles entrées d’historique.

Cela a fonctionné pour moi.

il suffit de mettre sous onCreate metode

 Button button = (Button) findViewById(R.id.reload_btn); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { web.loadUrl( "javascript:window.location.reload( true )" ); } }); 

C’est le code qui peut recharger un site web dans une webView

 web.loadUrl( "javascript:window.location.reload( true )" ); 

L’actualisation de l’URL de la vue Web actuelle n’est pas une utilisation courante.
Je l’ai utilisé dans un tel scénario: lorsque l’utilisateur accède à une autre activité et que l’utilisateur revient à l’activité de la vue Web, je rechargerai l’URL actuelle comme ceci:

 public class MyWebviewActivity extends Activity { WebView mWebView; .... .... .... @Override public void onRestart() { Ssortingng url = mWebView.getUrl(); Ssortingng postData = MyUtility.getOptionsDataForPOSTURL(mContext); mWebView.postUrl(url, EncodingUtils.getBytes(postData, "BASE64")); } } 

Vous pouvez également utiliser la fonction reload() de WebView. Mais notez que si vous avez chargé la vue Web avec postUrl() , alors mWebView.reload(); ne fonctionne pas Cela fonctionne aussi

 Ssortingng webUrl = webView.getUrl(); mWebView.loadUrl(webUrl); 

essaye ça :

 mWebView.loadUrl(mWebView.getUrl().toSsortingng()); 

Oui, pour une raison quelconque, WebView.reload () provoque un blocage s’il n’a pas pu être chargé auparavant (ce qui est lié à la manière dont il gère l’historique). C’est le code que j’utilise pour actualiser ma vue Web. Je stocke l’URL actuelle dans self.url

 # 1: Pause timeout and page loading self.timeout.pause() sleep(1) # 2: Check for internet connection (Really lazy way) while self.page().networkAccessManager().networkAccessible() == QNetworkAccessManager.NotAccessible: sleep(2) # 3:Try again if self.url == self.page().mainFrame().url(): self.page().action(QWebPage.Reload) self.timeout.resume(60) else: self.page().action(QWebPage.Stop) self.page().mainFrame().load(self.url) self.timeout.resume(30) return False 

Pourquoi ne pas essayer ça?

Code rapide pour appeler la classe interne:

 self.mainFrame.reload() 

ou appel externe

 myWebV.mainFrame.reload()