2013-05-31 40 views
10

Tôi đã cố gắng kết hợp hộp thoại tiến trình vào ứng dụng của mình khi các trang đang tải trong chế độ xem web để không chỉ có màn hình trắng trống. Tôi biết câu hỏi này được đăng ở khắp mọi nơi nhưng tôi dường như không thể tìm ra bất cứ điều gì phù hợp với tôi. Tôi mới lập trình và làm việc với android nên mọi thông tin sẽ hữu ích. Dưới đây là mã mà tôi hiện đang có. Với onPageStarted tôi nhận được một lỗi biên dịch cho Bitmap và tôi không chắc chắn vấn đề là gì. Cảm ơn.Thêm Hộp thoại tiến trình trong chế độ xem web

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

Bạn gặp lỗi gì? – Oam

+0

Lỗi hiện tại của tôi là sau khi hộp thoại xuất hiện, nó sẽ không biến mất khi trang được tải. – bigC5012

+1

Sử dụng xây dựng theo cách, Xem http://stackoverflow.com/a/31826829/3496570 – Nepster

Trả lời

27

Kiểm tra mã này,

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

Tôi đánh giá cao câu trả lời của bạn. Tất cả mọi thứ đang làm việc tuyệt vời! – bigC5012

0

Hãy thử điều này và tôi hy vọng, đây là những gì bạn đang sau

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

Không hoạt động cho tôi. –

+0

chúng tôi sử dụng WebView để tải các trang web trong ứng dụng của chính chúng ta thay vì điều hướng đến trình duyệt chrome. Đây là một cách tiếp cận FALSE. –

3

Webview với hộp thoại tiến độ thi công đối với tôi. mã làm việc đầy đủ

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