2012-03-13 6 views
3

로딩 대화 상자를 내 webview 응용 프로그램에서 구현하려고하지만 무엇을해도 그냥 작동하지 않습니다.안드로이드 webview 로딩 대화 상자

는 내가 원하는 매번 누군가가 로딩 대화는 다음과 같이 팝업해야하는 웹보기에서 링크를 클릭하면, 다음과 같다 :

loading dialog

을 그리고 로딩이 완료 될 때 사라한다. 누구든지 나 자신의 출처에서 그것을하는 방법을 보여줄 수 있습니까? 나는 많은 것을 시도해 봤지만 항상 문제가 있으므로 어떻게 해야할지 모르겠습니다.

import android.content.res.Configuration; 
import android.os.Bundle; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.Window; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class WebviewActivity extends MainActivity { 

    private WebView myWebView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.main); 

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

     myWebView.requestFocus(View.FOCUS_DOWN); 
     myWebView.setOnTouchListener(new View.OnTouchListener() { 
      public boolean onTouch(View v, MotionEvent event) { 
       switch (event.getAction()) { 
        case MotionEvent.ACTION_DOWN: 
        case MotionEvent.ACTION_UP: 
         if (!v.hasFocus()) { 
          v.requestFocus(); 
         } 
         break; 
       } 
       return false; 
      } 
     }); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     if (isOnline() == true) 
      myWebView.loadUrl(webLink); 
     else if (isOnline() == false) 
      showNoConnectionDialog(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig){   
     super.onConfigurationChanged(newConfig); 
    } 
} 

는 당신의 도움을 주셔서 감사합니다! :

이 내 WebviewActivity입니다

+0

를 사용하여 비동기 작업 ... 사용자 정의 할 대화를 진행하지 않습니다. 이 링크를 참조하십시오 http://as400samplecode.blogspot.in/2011/09/android-asynctask-httpclient-with.html – Aerrow

+0

그래,하지만 그게 아니야. 그래서 내가 어떻게 성취 할 수 있는지 모르겠다. . – MartijnG

답변

2

이 내 마지막 솔루션입니다 :

myWebView.setWebViewClient(new WebViewClient(){ 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      progressDialog.show(); 
      view.loadUrl(url); 
      return true;     
     } 
     @Override 
     public void onPageFinished(WebView view, final String url) { 
      progressDialog.dismiss(); 
     } 
    }); 
5

당신은이 같은 WebViewClient를 오버라이드 (override) 할 필요가

 webview.setWebViewClient(new WebViewClient(){ 

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

       progressDialog.cancel(); 


      } 
      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) { 

       progressDialog.show(); 
      } 
     }); 

webview.loadUrl(TwitterUrl); 
0

이 WebChromeClient 가능 할 수 있습니다. 그것은 나를 위해 일한다.

코드 : 이것에 대한

progressDialog.show(); // Add before page load 
webView.setWebChromeClient(new HelpWebChromeClient()); 
private class HelpWebChromeClient extends WebChromeClient { 
    @Override 
    public void onProgressChanged(WebView view, int newProgress) { 
    if(newProgress == 100) 
     progressDialog.dismiss(); 
    } 
} 
관련 문제