web-dev-qa-db-fra.com

Existe-t-il un meilleur moyen d'actualiser WebView?

D'accord. J'ai regardé PARTOUT et mon petit cerveau ne peut tout simplement 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

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
 xmlns:Android="http://schemas.Android.com/apk/res/Android"
 Android:id="@+id/RelativeLayout"
 Android:layout_width="fill_parent"
 Android:layout_height="fill_parent"
 Android:background="#000000"

>

 <WebView
        Android:id="@+id/webview"
        Android:layout_width="fill_parent" 
        Android:layout_height="wrap_content"
        Android:scrollbars="none"

 />

 <Button
  Android:id="@+id/new_button"
  Android:layout_width="fill_parent"
  Android:layout_height="wrap_content"
  Android:layout_alignParentBottom="true"
  Android:layout_centerHorizontal="true"
  Android:text="Refresh"
 />





</RelativeLayout>

Je n'aime pas l'idée de simplement ré-empiler activité après activité. Il doit y avoir un moyen plus simple de rafraîchir la vue Web. Veuillez aider. :)

43
cdg

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

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

de sorte que 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, donc ne fonctionne correctement qu'avec GET.

59
Pentium10

Vous pouvez appeler une mWebView.reload(); C'est ce que ça fait

80
Josh Hofing

La meilleure solution est de 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.

43
dragonroot

Cela a fonctionné pour moi.

il suffit de mettre sous le métode onCreate

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

Ceci est le code qui peut recharger un site Web dans une vue Web

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

essaye ça :

mWebView.loadUrl(mWebView.getUrl().toString());
4
Oubaida AlQuraan

L'actualisation de l'URL de la vue Web actuelle n'est pas une utilisation courante.
J'ai utilisé ceci dans un tel scénario: Lorsque l'utilisateur passe à une autre activité et que l'utilisateur revient à l'activité de Webview, je recharge l'URL actuelle comme ceci:

public class MyWebviewActivity extends Activity {
    WebView mWebView;
    ....
    ....
    ....
    @Override
    public void onRestart() {
            String url = mWebView.getUrl();
            String 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

String webUrl = webView.getUrl();
mWebView.loadUrl(webUrl);
3
trante