2017-08-03 10 views
0

進捗状況ダイアログが表示されたwebviewがあります。 すべてがうまくいきます、進捗ダイアログはとてもうまく動作し、ページが読み込まれると閉じることができます。Android Progress Dialogを呼び出した後に電話をかける - WebView

私の質問は次のとおりです。 ダイアログが閉じたりキャンセルしたりしたときに再開ダイアログを再開するにはどうすればいいですか? 戻るボタンを押すと、別のページに移動するたびに進捗ダイアログが再び表示されません。

ありがとうございました。

myWebView = (WebView) findViewById(R.id.webview); 
    WebSettings webSettings = myWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 

    myWebView.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (progressDialog == null) { 
       // in standard case YourActivity.this 
       progressDialog = new ProgressDialog(MainActivity.this); 
       progressDialog.setMessage("Please wait..."); 
       progressDialog.setCanceledOnTouchOutside(false); 
       progressDialog.show(); 
      } 
      view.loadUrl(url); 
      return true; 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 

      super.onPageFinished(view, url); 
      try { 

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

      } catch (Exception exception) { 
       exception.printStackTrace(); 
      } 
     } 

     @Override 
     public void onLoadResource (WebView view, String url) { 
     } 

     public void onPageStarted(WebView webView, String url, Bitmap favicon) { 
      super.onPageStarted(webView, url, favicon); 
      if (progressDialog == null) { 
       // in standard case YourActivity.this 
       progressDialog = new ProgressDialog(MainActivity.this); 
       progressDialog.setMessage("Loading..."); 
       progressDialog.setCanceledOnTouchOutside(false); 
       progressDialog.show(); 
      } 
     } 
    }); 

    myWebView.loadUrl("http://myweb.net"); 

...

@Override 
public void onBackPressed() { 
    try { 

     if (progressDialog .isShowing()) { 
      progressDialog .dismiss(); 
     } 

    } catch (Exception exception) { 
     exception.printStackTrace(); 
    } 
    if (myWebView.canGoBack()) { 
     myWebView.goBack(); 
    } else { 
     if (doubleBackToExitPressedOnce) { 
      super.onBackPressed(); 
      return; 
     } 

     this.doubleBackToExitPressedOnce = true; 
     Toast.makeText(this, "Press back twice for exit.", Toast.LENGTH_SHORT).show(); 

     new Handler().postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       doubleBackToExitPressedOnce=false; 
      } 
     }, 2000); 
    } 
} 

答えて

0
@Override 
public void onBackPressed() { 
try { 

    if (progressDialog .isShowing()) { 
     progressDialog .dismiss(); 
     progressDialog = null; // add this line 
    } 

    ... 
+0

は機能しません。戻るボタンを押すと、myWebView.setWebViewClient(new WebViewClient()を再度呼び出さないようです。 – Bonnie7

関連する問題