2013-05-31 14 views
10

Ich habe versucht, einen Fortschrittsdialog in meine App zu integrieren, wenn Seiten in die Webansicht geladen werden, so dass es nicht nur einen leeren weißen Bildschirm gibt. Ich weiß, dass diese Frage überall gepostet wird, aber ich kann nicht herausfinden, was für mich funktioniert. Ich bin neu im Programmieren und Arbeiten mit Android, so dass jede Information hilfreich wäre. Unten ist der Code, den ich gerade habe. Mit dem onPageStarted bekomme ich einen Kompilierfehler für Bitmap und ich bin nicht sicher, was das Problem ist. Vielen Dank.Hinzufügen eines Fortschrittsdialogs in einer Webansicht

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

Welchen Fehler haben Sie? – Oam

+0

Der Fehler, den ich jetzt habe, ist, dass nach dem Erscheinen des Dialogs die Seite nicht mehr verschwindet, sobald die Seite geladen ist. – bigC5012

+1

Verwenden Sie eine integrierte Möglichkeit, siehe http://stackoverflow.com/a/31826829/3496570 – Nepster

Antwort

27

prüfen sind,

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

Ich freue mich über Ihre Antwort. Alles funktioniert super! – bigC5012

0

die Sie interessieren, und ich hoffe, das ist, was Sie nach diesem Code

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

Funktioniert nicht für mich. –

+0

verwenden wir WebView, um Webseiten in unserer eigenen App zu laden, anstatt zum Chrome-Browser zu navigieren. Dies ist ein falscher Ansatz. –

3

Webview mit Dialog Fortschritt für mich arbeiten. Voll funktionsfähiger Code

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(); 
      } 
     } 
    } 
} 
Verwandte Themen