2015-12-29 167 views
0

大家好我對我的progressbar有問題。 它不會消失當頁面加載到WebView任何人都可以請幫忙,因爲我prbiert代碼,但它不起作用 我有XML名稱progressbar(android:id="@+id/progressBar")我已經在互聯網上搜索了很多解決方案,但沒有任何幫助加載頁面後隱藏progresbar

public class GenerateQRCodeActivity extends Activity implements OnClickListener{ 
public static final Uri MailTo = null; 
private long lastMoveEventTime = -1; 
private int eventTimeInterval = 40; 
private ProgressBar progressBar; 
private WebView mWebView; 
@SuppressLint("SetJavaScriptEnabled") 

private String LOG_TAG = "GenerateQRCode"; 
protected Activity MyActivity; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    progressBar = (ProgressBar) findViewById(R.id.progressBar); 
    progressBar.setMax(100); 
    ImageButton button2 = (ImageButton) findViewById(R.id.button2); 
    ImageButton button3 = (ImageButton) findViewById(R.id.button3); 
    button2.setOnClickListener(this); 
    button3.setOnClickListener(this); 
    mWebView = (WebView) findViewById(R.id.webview); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.setWebChromeClient(new WebChromeClient()); 
    WebSettings webSettings = mWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    mWebView.requestFocusFromTouch(); 
    mWebView.getSettings().setRenderPriority(RenderPriority.HIGH); 
    mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
    mWebView.setBackgroundColor(Color.parseColor("#4dc3f1")); 
    if (Build.VERSION.SDK_INT >= 11) { 
     mWebView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null); 
    } 
    mWebView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); 
    mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
    webSettings.setDomStorageEnabled(true); 
    mWebView.setWebViewClient(new WebViewClientDemo()); 
    mWebView.setWebChromeClient(new WebChromeClientDemo()); 
    mWebView.loadUrl("http://www.google.com/"); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.setWebViewClient(new HelloWebViewClient()); 





    getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, 
      WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); 





} 
private class WebViewClientDemo extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
      progressBar.setVisibility(View.GONE); 
      progressBar.setProgress(100); 
     } 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon); 
      progressBar.setVisibility(View.GONE); 
      progressBar.setProgress(0); 
     }  
    } 
    private class WebChromeClientDemo extends WebChromeClient { 
     public void onProgressChanged(WebView view, int progress) { 
      progressBar.setProgress(progress); 
     } 
    } 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 
      mWebView.goBack(); 
      return true; 
     } 
     else { 
      finish(); 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     return true; 
    } 
+0

的[在一個網頁視圖添加進度對話框]可能的複製(http://stackoverflow.com/questions/16849347 /在網絡視圖中添加進度對話框) – Rajesh

回答

2

您可以使用這些代碼爲它

 WebSettings settings = webView.getSettings(); 

     settings.setJavaScriptEnabled(true); 
     webView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); 

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

     progressDialog = new ProgressDialog(ContestActivity.this); 
     progressDialog.setMessage("Loading..."); 
     progressDialog.show(); 

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

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

      @Override 
      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
       Toast.makeText(ContestActivity.this, "Error:" + description, Toast.LENGTH_SHORT).show(); 

      } 
     }); 
     webView.loadUrl("YOUR URL HERE"); 
+0

@ d00nn12 ...如果它比PLZ更適合接受其他人的這些答案,誰也會陷入同樣的​​問題 –

+0

nothe do not do work對我來說:( – d00nn12

+0

你現在得到什麼問題? –

0

刪除此行progressBar.setProgress(100);

@Override 
    public void onPageFinished(WebView view, String url) 
    { 
    super.onPageFinished(view, url); 
    progressBar.setVisibility(View.GONE); 
    progressBar.setProgress(100); // <--This line is to delete 
    } 

你說progressBar.setVisibality(View.GONE);隱藏進度條,自帶progressBar.setProgress(100);後說:提示該消息:)

+0

我刪除了它,但它仍然顯示 – d00nn12

0

你必須設置progessbar的能見度在onPageStartedVisible所以替換此代碼:

@Override 
    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url); 
     progressBar.setVisibility(View.INVISIBLE); 
     progressBar.setProgress(100); 
    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     super.onPageStarted(view, url, favicon); 
     progressBar.setVisibility(View.VISIBLE); 
     progressBar.setProgress(0); 
    } 

與你:

@Override 
    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url); 
     progressBar.setVisibility(View.GONE); 
     progressBar.setProgress(100); 
    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     super.onPageStarted(view, url, favicon); 
     progressBar.setVisibility(View.GONE); 
     progressBar.setProgress(0); 
    } 
+0

sory我的英語不太好 是的,我在開始時就已經擁有了,所以不要有一個單一的答案在加載後消失進度條 – d00nn12