2012-05-07 2 views
1

모노로드를 사용하는 응용 프로그램에서 사용하는 WebView에 진행률 표시 구현을 표시하려고했습니다. 나는 꽤 멀리 도달했지만 퍼즐의 마지막 부분을 해결할 수 없습니다. Monodroid Pro의 유료 버전을 사용 중이며 Galaxy S2를 테스트 장치로 사용하고 있습니다. 여기 MonoDroid의 WebView에서 진행 표시 줄을 표시하는 방법

내가 지금까지 무엇을했는지 있습니다 : -

OnCreate 섹션에서

: -

으로 onProgress 변경 재정의 메서드에 이제
 Window.RequestFeature(WindowFeatures.Progress); 

     SetContentView(Resource.Layout.Main); 

     Window.SetFeatureInt(WindowFeatures.Progress, Window.ProgressVisibilityOn); 

     wv.SetWebViewClient(new monitor()); 

     wv.LoadUrl("https://www.google.com"); 

: - 이제

private class progress : WebChromeClient 
    { 
     public override void OnProgressChanged(WebView view, int newProgress) 
     {      
      base.OnProgressChanged(view, newProgress); 
     } 
    } 

솔루션 꽤 안드로이드의 Java 구현을위한 것입니다, 예 : -

webview.setWebChromeClient(new WebChromeClient() { 
    public void onProgressChanged(WebView view, int progress) 
    { 
     //Make the bar disappear after URL is loaded, and changes string to Loading... 
     MyActivity.setTitle("Loading..."); 
     MyActivity.setProgress(progress * 100); //Make the bar disappear after URL is loaded 

     //Return the app name after finish loading 
     if(progress == 100) 
      MyActivity.setTitle(R.string.app_name); 
    } 
}); 
하지만 안드로이드 구현과 SetProgress 방법을 사용할 수 monodroid를 사용하여, 상기 Activity 인스턴스 Monodroid에서 완전히 새로운 클래스하여야한다 반면 OnCreate 방법으로 제조 될 수 있으며, 다음 webchromeclient 먼저 상속 될 등등. 나는 무엇을 놓치고 있습니까? 내가 모르는 또 다른 방법이 있습니까? 어떤 도움은 정말로 감사 할 것입니다.

답변

2

C#은 Java와 같은 익명의 클래스를 지원하지 않으므로 별도의 클래스를 정의해야합니다.

public class CustomWebChromeClient : WebChromeClient 
{ 
    private Activity _context; 

    public CustomWebChromeClient(Activity context) 
    { 
     _context = context; 
    } 

    public override void OnProgressChanged(WebView view, int newProgress) 
    { 
     base.OnProgressChanged(view, newProgress); 

     _context.SetProgress(newProgress * 100); 
    } 
} 

그런 다음 당신의 활동에 자신을 건네,이 클래스의 인스턴스를 만들 수 있습니다 다음 Activity.SetProgress() 방법은 당신이 메서드를 호출 클래스로의 활동에 대한 참조를 전달하고 사용할 수 있다는 의미 공개 생성자 :

webview.SetWebChromeClient(new CustomWebChromeClient(this)); 

나는 또한 당신이 가야 도움이 될 수보다 완벽한 브라우저 데모 available here 있습니다.

+0

당신의 상세한 도움 사람을 위해 고맙습니다!, 이것은 정말로 도움이되었습니다!. 가이드에 대한 귀하의 링크도 매우 도움이 될 것입니다. 이 후에는 브라우저에서 링크를 받거나 다른 활동으로 보내는 등의 의도에 집중할 예정입니다. 이미 의도 한 필터 작업을 완료하고 처리 부분이 남아 있습니다. 다시, 고맙습니다. – wjbjnr

관련 문제