2012-01-25 18 views
2

新しいリンクがクリックされるたびに進捗状況ダイアログが表示されるようにするにはどうすればいいですか?webview私は多くのチュートリアルとメソッドを試しましたが、それらのすべてがアプリが最初に読み込まれたときに一度だけダイアログを表示します。Webviewで進捗ダイアログを表示

は、ここに私のコード

mWebView.setWebViewClient(new WebViewClient() { 

      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) 
      { 
       view.loadUrl(url); 
       return true; 
      } 
      ProgressDialog dialog = ProgressDialog.show(myActivity.this, "", 
          "Loading. Please wait...", true); 
      @Override 
      public void onPageFinished(WebView view, String url) { 
      dialog.dismiss(); 
      } 
+0

のために働く、この最も簡単な1試してみてください。 –

+0

これに関するStackOverflowの話はかなりたくさんあります:http://stackoverflow.com/questions/2537454/android-webview-progress-barこことhttp://stackoverflow.com/questions/2496119/in-an-android例えば、 – nwaltham

+0

私が知っている、人々はどこにでも問題を抱えています。私の問題は、タイトルにprogressBarが欲しくないということです。ボタンにonClickListenerをアタッチすると、簡単にダイアログを作成できます。ページのURLが変更され、その時点でダイアログが表示されるときにアプリケーションを実現させる方法を知りません – Zach

答えて

3

これを試してみて、

// Let's display the progress in the activity title bar, like the 
// browser app does. 
getWindow().requestFeature(Window.FEATURE_PROGRESS); 

webview.getSettings().setJavaScriptEnabled(true); 

final Activity activity = this; 
webview.setWebChromeClient(new WebChromeClient() { 
    public void onProgressChanged(WebView view, int progress) { 
    // Activities and WebViews measure progress with different scales. 
    // The progress meter will automatically disappear when we reach 100% 
    activity.setProgress(progress * 1000); 
    } 
}); 
webview.setWebViewClient(new WebViewClient() { 
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
    Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show(); 
    } 
}); 

webview.loadUrl("http://slashdot.org/"); 

であり、あなたがあなた自身のprogressDialogその後、

webView.setWebViewClient(new WebViewClient() { 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) 
     { 
      // Start PROGRESS DIALOG 
      view.loadUrl(url); 
      return true; 
     } 

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

     //HIDE PROGRESS DIALOG LOADING IT HAS FINISHED 
     } 

    }); 

を作り、私が起こるかを知るようにしたい場合は...

+0

その場所で進捗ダイアログを開始する際に問題が発生しています。私はソースコードを追加しました..これは私が実行するために得ることができる唯一の方法ですが、アプリケーションが最初にロードされたときにのみ実行されます – Zach

+0

@ user1166556 - あなたは間違ってProgressDialogオブジェクトをあなたのアクティビティのonCreate() shouldOverridで...そしてpageFinished()を閉じる – user370305

5

チェックアウトこの:

wvCouponsAndOffers.setWebViewClient(new WebViewClient() { 
     ProgressDialog progressDialog = new ProgressDialog(CouponsWebViewUI.this); 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon); 
      progressDialog.setMessage(StringConstants.PROGRESS_DIALOG_MSG); 
      progressDialog.setCancelable(false); 
      progressDialog.setOnKeyListener(new OnKeyListener(){ 
       @Override 
       public boolean onKey(DialogInterface dialog, int keyCode, 
         KeyEvent event) { 
        if(keyCode == KeyEvent.KEYCODE_SEARCH) { 
         return true; 
        } 
        else 
         return false; 
       }}); 
      progressDialog.show(); 
     } 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      progressDialog.setMessage(StringConstants.PROGRESS_DIALOG_MSG); 
      progressDialog.setCancelable(false); 
      progressDialog.setOnKeyListener(new OnKeyListener(){ 
       @Override 
       public boolean onKey(DialogInterface dialog, int keyCode, 
         KeyEvent event) { 
        if(keyCode == KeyEvent.KEYCODE_SEARCH) { 
         return true; 
        } 
        else 
         return false; 
       }}); 
      progressDialog.show(); 
      view.loadUrl(url); 
      return true; 
     } 

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

    }); 
0

はあなたが既に試したものを指定することができればそれが役立つだろう、それは私

public class HomeWebViewActivity extends AppCompatActivity{ 

    private String weburl; 
    private WebView webview; 
    private Toolbar toolbar; 
    private ProgressDialog prDialog; 



    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.home_webview_activity); 


     toolbar = (Toolbar) findViewById(R.id.toolbar_homewebview); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setDisplayShowHomeEnabled(true); 


     weburl="ADD YOUR URL HERE"; 

     webview = (WebView) findViewById(R.id.webviewinfo); 
     webview.setWebViewClient(new WebVwClientcls()); 


     webview.getSettings().setJavaScriptEnabled(true); 
     webview.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
     webview.loadUrl(weburl); 


    } 

    private class WebVwClientcls 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(HomeWebViewActivity.this); 
      prDialog.setMessage("Please wait ..."); 
      prDialog.show(); 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
      if(prDialog!=null){ 
       prDialog.dismiss(); 
      } 
     } 
    } 
} 
関連する問題