7
votes

Comment déployer mon dialogue de dialogue de progression après que WebView est chargé?

Que dois-je avoir besoin de mon code pour créer la boîte de dialogue rejeter () Une fois que la vision Web est chargée? XXX

J'ai essayé < Pré> xxx

n'a pas fonctionné.


2 commentaires

Onpage est-il appelé? Dans le fil de l'interface utilisateur?


Désolé, j'aurais dû juste faire ceci en premier lieu, je mets toute la classe de la façon dont je suis courant. Et si vous faites défiler, vous pouvez voir que j'ai essayé un surpagefinché et que cela ne fonctionnait pas. Peut-être que la façon dont je l'ai fait était faux? Ou où je l'ai placé?


6 Réponses :


2
votes

Comment accédez-vous PD code> dans OnpageFinhed () code>? (Et êtes-vous sûr qu'il est vraiment appelé lorsque la page se charge?)

Dans votre Oncreate () code>, essayez de passer PD code> à votre HOMECLIENT code> Donc, que HOMECLIENT code> peut prendre en charge le renvoi de la boîte de dialogue. P>

Votre HOMECLIENT doit ressembler à ceci: P>

ProgressDialog pd = ProgressDialog.show(Fbook.this, "", 
                "Loading. Please wait...", true);
webview.setWebViewClient(new homeClient(pd));


2 commentaires

Très bel exemple, j'aime ça!


Cool ... la partie que j'ai manquée pendant quelques minutes maintenant.



16
votes

: o webview.setwebviewClient (nouveau chôlant ()); HOMECLIENT () ????

Essayez ceci xxx

update: C'est un bon exemple.

Android Webview et la solution de progression indéterminée


0 commentaires

3
votes

Ceci est OK.

public class WordActivity extends Activity {

    private WebView webview;
    private ProgressDialog progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webview);
        Bundle objetbunble  = this.getIntent().getExtras(); 
        webview = (WebView) findViewById(R.id.webview);

        final Activity activity = this;

        webview.getSettings().setJavaScriptEnabled(true);

        webview.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView view, String url) {              
                view.loadUrl(url);
                return true;
            }
            public void onLoadResource (WebView view, String url) {
                if (progressDialog == null) {
                    progressDialog = new ProgressDialog(activity);
                    progressDialog.setMessage("Chargement en cours");
                    progressDialog.show();
                }
            }
            public void onPageFinished(WebView view, String url) {
                if (progressDialog.isShowing()) {
                    progressDialog.dismiss();
                    progressDialog = null;
                }
            }
        }); 
        webview.loadUrl("http://www.example.com");
    }


}


1 commentaires

Hey Samuel, j'ai utilisé votre code pour webviews pour le lancement initial tout ce qui fonctionne bien. Donc, lorsque je navigue vers la même navigation Web pour la deuxième fois, ProgressDialog montrent continuellement après la pageSinish (Remarque: attendu 10 minutes mais la boîte de dialogue de progrès n'a pas rejeté) S'il vous plaît aidez-moi comment puis-je faire tat .. merci d'avance ...



3
votes

@jorgesys Ce n'est pas précis à 100%. Si vous avez plusieurs iframes dans une page, vous aurez de multiples formés (et surpagètent). Et si vous avez plusieurs redirections, cela peut également échouer. Je pense que cette approche résout tous les problèmes:

boolean loadingFinished = true;
boolean redirect = false;

mWebView.setWebViewClient(new WebViewClient() {

   @Override
   public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) {
       if (!loadingFinished) {
          redirect = true;
       }

   loadingFinished = false;
   webView.loadUrl(urlNewString);
   return true;
   }

   @Override
   public void onPageStarted(WebView view, String url) {
        loadingFinished = false;
        //SHOW LOADING IF IT ISNT ALREADY VISIBLE  
    }

   @Override
   public void onPageFinished(WebView view, String url) {
       if(!redirect){
          loadingFinished = true;
       }

       if(loadingFinished && !redirect){
         //HIDE LOADING IT HAS FINISHED
       } else{
          redirect = false; 
       }

    }
});


0 commentaires

0
votes

Si vous souhaitez simplement montrer la progression avant le chargement de la page Web dans WebView. Vous pouvez simplement demander FONCTION DE FENÊTRE DE FONCTION DE FENÊTRE STROND> Comme P> xxx pré>

avant setContentView (r.layout.blahblah); code> p>

et montrez-lui progression dans ONPROGRESSCANGED COMME P>

webView.setWebViewClient(new WebViewClient() {
    ProgressDialog rogressDialog ;
    @Override
    public void onPageStarted(WebView view, String url, Bitmap bitmap) {
        progressDialog = ProgressDialog.show(context, "Loading...", "Please wait...");//where context = YourActivity.this;
        super.onPageStarted(view, url, bitmap);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        progressDialog .dismiss();
        super.onPageFinished(view, url);
    }
});

webView.loadUrl(url);


0 commentaires

0
votes
wv1.setWebViewClient(new WebViewClient() {
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Toast.makeText(Entertainment.this, description, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon)
            {
                progressDialog.show();
            }


            @Override
            public void onPageFinished(WebView view, String url) {
                progressDialog.dismiss();
                String webUrl = wv1.getUrl();

            }

        });

    wv1.loadUrl(url);
The above code will show a progress dialogue for every incoming link you navigate to the in webview.

0 commentaires