2012-06-16 5 views
0

나는 간단한 monodroid 문제SetWebViewClient 호출에서 어떻게 반환합니까?

활동 A가 활동 B는 웹보기를 가지고 dealWithWebView()에서이

SetContentView(Resource.Layout.webView); 
WebView webView = FindViewById<WebView>(Resource.Id.webView1); 
webView.Settings.JavaScriptEnabled = true; 
webView.LoadUrl(url); 
webView.SetWebViewClient(new dealWithWebView()); 

과 같은

활동 B를 호출, 내가 가진이

class dealWithWebView : WebViewClient 
{ 
    WebView webView; 

    public override void OnPageFinished(WebView view, string url) 
    { 
     webView = view; 
     Context c = webView.Context; 
     // it goes away and does something 
     // calls another method in the class which returns back here 
    } 
} 
에게 있습니다

문제는 WebViewClient에서 돌아오고 "B"에서 "A"로 돌아갈 수없는 것 같습니다.

어떻게하면됩니까? 사용

SetContentView(Resource.Layout.webView); 
WebView webView = FindViewById<WebView>(Resource.Id.webView1); 
webView.Settings.JavaScriptEnabled = true; 
webView.LoadUrl(url); 
webView.SetWebViewClient(new dealWithWebView(this)); 

같은

+0

'사라져 버리고 무언가를하는'것은 무엇을 의미합니까? 'Finish()'메서드를 사용하여 webview 활동을 닫을 수 있지만, 무엇을 하려는지 확실하지 않습니다. 제발 좀 더 자세히 ... – Matthew

+0

고마워요. 내가하려는 것은 OnPageFinished에서 사물 더미에 불과합니다. 작업이 끝나면 컨트롤은 Finish()를 호출하고 컨트롤을 "A"로 반환하는 작업 "B"로 다시 전달됩니다. 문제는 webView.SetWebViewClient (new dealWithWebView()) 다음에 Finish()를 넣을 수 없다는 것입니다. 이것이 처음 호출 될 때 (PageFinish는 페이지가 끝날 때까지 호출되지 않기 때문에), SetWebViewClient에서 Finish()를 호출하려고한다. 분명히, 더 좋은 방법이 있다면 그것은 좋을 것입니다 ... – Nodoid

답변

0

당신이 할 수있는 일 :

class dealWithWebView : WebViewClient 
{ 
    Activity parent; 
    public dealWithWebView(Activity parent) 
    { 
     this.parent = parent; 
    } 

    public override void OnPageFinished(WebView view, string url) 
    { 
     var webView = view; 
     Context c = webView.Context; 
     // it goes away and does something 
     // calls another method in the class which returns back here 
     // all done - so finish the parent now 
     parent.Finish(); 
    } 
} 
0

당신은 또한 사용할 수 있습니다

class WebViewClientCallback : WebViewClient 
{ 
    public event EventHandler PageLoaded = delegate { }; 

    public override void OnPageFinished(WebView view, string url) 
    { 
     base.OnPageFinished(view, url); 
     PageLoaded(this, EventArgs.Empty); 
    } 

} 

사용법 :

clientCallback = new WebViewClientCallback(); 
clientCallback.PageLoaded += delegate(object sender, EventArgs e) { 
    // What to do next? 
    // Do the things you want to do after PageIsLoaded  
}; 
webview.SetWebViewClient(clientCallback); 
webview.LoadData("<p>HTML-CONTENT</p>", "text/html; charset=UTF-8", null); 
관련 문제