2016-04-01 12 views
2

私のアプリケーションでは、私はwebviewを使ってURLを開いています。 URLは非常にシンプルですが、ロードするのに秒がかかります。しかし、URLが完全にロードされても、進行状況バーは表示されません。私は何が間違っているのか理解できません。私を助けてください。私はコードを投稿しています。Android:ProgressbarでURL​​を読み込み、ロードを続ける

のWebViewクラス

public class noti_cse extends BaseActivity { 
    private WebView webView; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.noti_cse); 
     // overridePendingTransition(0, 0); 

     // webView = (WebView) findViewById(R.id.webcse); 
     // webView.setWebViewClient(new MyWebViewClient()); 
     if (!DetectConnection.checkInternetConnection(this)) { 
      Toast.makeText(getApplicationContext(), "No Internet!", Toast.LENGTH_SHORT).show(); 
     } else { 
      webView = (WebView) findViewById(R.id.webcse); 
      webView.setWebViewClient(new CustomWebViewClient()); 
      webView.clearCache(true); 
      webView.clearHistory(); 
      webView.getSettings().setJavaScriptEnabled(true); 
      webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
      webView.getSettings().setBuiltInZoomControls(true); 
      startWebView("http://notify.php"); 
     } 


     // webView.getSettings().setJavaScriptEnabled(true); 
     // startWebView("http://notify.php"); 
     // webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); 

     // webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 


    } 


    private void startWebView(String url) { 

     //Create new webview Client to show progress dialog 
     //When opening a url or click on link 

     webView.setWebViewClient(new WebViewClient() { 
      ProgressDialog progressDialog; 

      //If you will not use this method url links are opeen in new brower not in webview 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       return true; 
      } 

      //Show loader on url load 
      public void onLoadResource(WebView view, String url) { 
       if (progressDialog == null) { 
        // in standard case YourActivity.this 
        progressDialog = new ProgressDialog(noti_cse.this); 
        progressDialog.setMessage("On the Way!!!"); 
        progressDialog.setCanceledOnTouchOutside(false); 
        progressDialog.show(); 
       } 
      } 

      public void onPageFinished(WebView view, String url) { 
       try { 
        if (progressDialog.isShowing()) { 
         progressDialog.dismiss(); 
         progressDialog = null; 
        } 
       } catch (Exception exception) { 
        exception.printStackTrace(); 
       } 
      } 

     }); 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.loadUrl(url); 

    } 

    private class CustomWebViewClient extends WebViewClient { 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (!DetectConnection.checkInternetConnection(noti_cse.this)) { 
       Toast.makeText(getApplicationContext(), "No Internet!", Toast.LENGTH_SHORT).show(); 
      } else { 
       view.loadUrl(url); 
      } 
      return true; 
     } 
    } 

    @Override 
    protected boolean useDrawerToggle() { 
     return false; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if (item.getItemId() == R.id.action_placements) 
      return true; 

     if (item.getItemId() == android.R.id.home) 
      onBackPressed(); 

     return super.onOptionsItemSelected(item); 
    } 

答えて

0

あなたは2 WebViewClientを設定しています。

まず:

webView.setWebViewClient(new CustomWebViewClient()); 

その後、あなたは新しいWebviewClientを設定する

startWebView() 

を呼んでいます。

あなたは以下のようにあなたの方法を変更することができます。

private void startWebView(String url) { 

    //Create new webview Client to show progress dialog 
    //When opening a url or click on link 

    webView.setWebViewClient(new WebViewClient() { 
     ProgressDialog progressDialog; 

     //If you will not use this method url links are opeen in new brower not in webview 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (!DetectConnection.checkInternetConnection(noti_cse.this)) { 
      Toast.makeText(getApplicationContext(), "No Internet!", Toast.LENGTH_SHORT).show(); 
      } else { 
       view.loadUrl(url); 
      } 
      return true; 
     } 

     //Show loader on url load 
     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon){ 
      if (progressDialog == null) { 
       // in standard case YourActivity.this 
       progressDialog = new ProgressDialog(noti_cse.this); 
       progressDialog.setMessage("On the Way!!!"); 
       progressDialog.setCanceledOnTouchOutside(false); 
       progressDialog.show(); 
      } 
      super.onPageStarted(view, url, favicon); 
     } 

     public void onPageFinished(WebView view, String url) { 
      try { 
       if (progressDialog.isShowing()) { 
        progressDialog.dismiss(); 
        progressDialog = null; 
       } 
      } catch (Exception exception) { 
       exception.printStackTrace(); 
      } 
     } 

    }); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.loadUrl(url); 

} 

をそして、このライン形式のonCreate()メソッド削除:

webView.setWebViewClient(new CustomWebViewClient()); 
関連する問題