2013-05-31 15 views
10

Ho cercato di incorporare una finestra di dialogo di avanzamento nella mia app quando le pagine si stanno caricando nella visualizzazione Web, quindi non c'è solo una schermata bianca vuota. So che questa domanda è pubblicata ovunque, ma non riesco a capire nulla che funzioni per me. Sono nuovo a programmare e lavorare con Android quindi qualsiasi informazione sarebbe utile. Di seguito è riportato il codice che attualmente ho ora. Con onPageStarted sto ottenendo un errore di compilazione per Bitmap e non sono sicuro di quale sia il problema. Grazie.Aggiunta di una finestra di dialogo di avanzamento in una webview

public class Grades extends Activity{ 

@Override 
protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 


    //requesting system settings 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().requestFeature(Window.FEATURE_PROGRESS); 
    WebView webview = new WebView(this); 

    //web settings 

    WebSettings webSettings = webview.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     webSettings.setDisplayZoomControls(true); 
     webSettings.setBuiltInZoomControls(true); 


    setContentView(webview); 

    //loads webpages in webview instead of launching browser 

    webview.setWebViewClient(new WebViewClient() { 
      ProgressDialog prDialog; 
      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) { 
       prDialog = ProgressDialog.show(Grades.this, null, "loading, please wait..."); 
       super.onPageStarted(view, url, favicon); 
      } 

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

    //loading webpage 
    webview.loadUrl("page__link"); 
} 
+0

Che errore hai? – Oam

+0

L'errore che ho ora è che dopo che la finestra di dialogo appare non va via una volta caricata la pagina. – bigC5012

+1

Utilizzare una build in modo, vedere http://stackoverflow.com/a/31826829/3496570 – Nepster

risposta

27

Controllare questo codice,

final ProgressDialog pd = ProgressDialog.show(OnlinePaymentActivity.this, "", "Please wait, your transaction is being processed...", true); 

      mWebview = (WebView)findViewById(R.id.webView1); 

       mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript 

       mWebview.getSettings().setLoadWithOverviewMode(true); 
       mWebview.getSettings().setUseWideViewPort(true); 
       mWebview.getSettings().setBuiltInZoomControls(true); 


       mWebview.setWebViewClient(new WebViewClient() { 
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
         Toast.makeText(activity, description, Toast.LENGTH_SHORT).show(); 
        } 

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


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

          String webUrl = mWebview.getUrl(); 

          } 

} 

        }); 

       mWebview .loadUrl("www.google.com"); 
+1

Apprezzo la tua risposta. Tutto funziona alla grande! – bigC5012

0

Prova questo e spero, questo è quello che siete dopo

webview.setWebChromeClient(new WebChromeClient() { 
     public void onProgressChanged(WebView view, int progress) { 
      //Also you can show the progress percentage using integer value 'progress' 
      if(!prDialog.isShowing()){ 
      prDialog = ProgressDialog.show(Grades.this, null, "loading, please wait..."); 
      } 


      if (progress == 100&&prDialog.isShowing()) { 
       prDialog.dismiss(); 
      } 
     } 
    }); 
+0

Doesnot funziona per me. –

+0

utilizziamo WebView per caricare pagine Web nella nostra app anziché navigare nel browser Chrome. Questo è un approccio FALSE. –

3

Webview con finestra di avanzamento di lavoro per me. codice completo funzionante

import android.app.ProgressDialog; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

import com.yubrajpoudel.R; 

/** 
* Created by yubraj on 12/25/15. 
*/ 
public class NewsActivity extends AppCompatActivity { 
    private WebView webView; 
    ProgressDialog prDialog; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.page_news); 
     setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); 

     webView = (WebView) findViewById(R.id.wv_news); 
     webView.setWebViewClient(new MyWebViewClient()); 

     String url = "http://google.com/"; 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
     webView.loadUrl(url); 


    } 

    private class MyWebViewClient extends WebViewClient { 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon); 
      prDialog = new ProgressDialog(NewsActivity.this); 
      prDialog.setMessage("Please wait ..."); 
      prDialog.show(); 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
      if(prDialog!=null){ 
       prDialog.dismiss(); 
      } 
     } 
    } 
}