2015-04-10 1 views
1

Я показываю диалог прогресса в моем WebView но это не скрывает на странице закончил я просмотрел многие так ее сказали «progress.dismiss()» но до сих пор его не отклоняя также погрузка не показан, который я перейти на другие страницы в WebViewпрогресс бара в WebView продолжает нагрузку не прячась за страницей завершила загрузку

мой код

public class MainActivity extends ActionBarActivity { 
private WebView webView; 
private final String TAG = MainActivity.class.getSimpleName(); 
ConnectivityManager cm; 
android.net.NetworkInfo wifi; 
android.net.NetworkInfo datac; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    this.supportRequestWindowFeature(Window.FEATURE_NO_TITLE); 
    cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    wifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
    datac = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
    if ((wifi != null & datac != null) 
      && (wifi.isConnected() | datac.isConnected())) { 
     //getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); //to hide notification bar 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     webView = (WebView)findViewById(R.id.webView); 
     WebSettings webSettings = webView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     webSettings.setDomStorageEnabled(true); 
     webSettings.setAppCacheEnabled(true); 
     webView.setWebViewClient(new WebViewClient(){ 

      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       boolean returnValue=true; 
       if ((wifi != null & datac != null) 
         && (wifi.isConnected() | datac.isConnected())) { 
        if ((Uri.parse(url).getHost().contains("www.cbazaar") || Uri.parse(url).getHost().contains("payseal.icicibank")) || Uri.parse(url).getHost().contains("www.ccavenue") 
          || Uri.parse(url).getHost().contains("www.braintreepaments") || Uri.parse(url).getHost().contains("www.sandbox")) { 

         returnValue=false; 
        } 

       if(returnValue==true){ 
       Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
       view.getContext().startActivity(intent); 
       return returnValue; 
       } 
       } 
       return returnValue; 
      } 
     @Override 
      public void onReceivedError(WebView view, int errorCode, 
             String description, String failingUrl) { 
      webView.loadUrl("javascript:history.go(-1)"); 

      } 
      ProgressDialog pd = null; 

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

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

     webView.loadUrl("http://www.cbazaar.com"); 
    }else{ 
     //no connection 
     setContentView(R.layout.activity_no_internet); 
     Button netOnBtn=(Button) findViewById(R.id.netOnButton); 
     Button refreshHmeBtn=(Button) findViewById(R.id.refreshHmeBtn); 
     netOnBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0); 
      } 
     }); 
     refreshHmeBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent gotoMainActivity = new Intent (MainActivity.this,MainActivity.class); 
       startActivity(gotoMainActivity); 
       finish(); 
      } 
     }); 

    } 
} 
// Open previous opened link from history on webview when back button pressed 

@Override 
// Detect when the back button is pressed 
public void onBackPressed() { 
    if(webView.canGoBack()) { 
     webView.goBack(); 
    } else { 
     // Let the system handle the back button 
     super.onBackPressed(); 
    } 
} 

может кто-нибудь помочь мне о том, как это может быть отлажены или почему это загрузка не отклоняется и не отображается при перемещении на другие страницы

Заранее спасибо, поскольку это мое первое веб-приложение.

+0

Попытка: 'progressDialog = ProgressDialog.show (MyActivity.this,« Please wait ... »,« Извлечение данных ... », true);' in 'onLoadResource' без if clause и' progressDialog.dismiss() ; 'in' onPageFinished() 'without if clause –

+0

try2:' progressDialog.cancel(); ' –

+0

жаль, что даже этот dint, похоже, работает, он продолжает загружать – jalilIrfan

ответ

2

попробовать что-то вроде этого:

private void startWebView(String url) { 

    MyView.setWebChromeClient(new WebChromeClient() { 
     ProgressDialog progressDialog = new ProgressDialog(MainActivity.this); 
     @Override 
     public void onProgressChanged(WebView view, int progress) { 
      if (progress < 100) { 
       // in standard case YourActivity.this 

       progressDialog.setMessage("Loading..."); 
       progressDialog.show(); 

      } 

      if (progress == 100) { 
       if (progressDialog.isShowing()) { 
        progressDialog.dismiss(); 
        progressDialog = null; 
       } 
      } 
     } 
    }); 


    // Javascript enabled on webview 
    webView.getSettings().setJavaScriptEnabled(true); 

    //Load url in webview 
    webView.loadUrl(url); 

} 

Таким образом, вы можете использовать реальный прогрессбар в вашем ProgressDialog.

+0

Спасибо за помощь в этом, что помогло, но это открывает многократный диалог прогресса выше другие, и все это держит нагрузку – jalilIrfan

+0

@jalilIrfan, попробуйте мой updateed ответ – JonasCz

+0

я, имеющую ошибку в @Override «метод не отменяет метод из суперкласса» Также в вашем предыдущем коде множественной прогресс диалог происходит потому, что загрузка страницы с первого раза перенаправляется с cbazaar.com на cbazaar.in После чего загрузка работала нормально – jalilIrfan