2011-04-26 2 views
2

WP7 애플리케이션에서 Google AdMob 컨트롤을 사용하고 예외가 발생하기 시작했습니다. 나는 그 컨트롤이 그 안에있는 웹 브라우저를 사용한다고 생각한다. 이제 내 페이지에서 다음과 같은 오류가 표시됩니다. 이 문제를 해결하는 방법에 대한 제안.오류 : 시각적 트리에있을 때까지 webbrowser 메소드를 호출 할 수 없습니다.

System.InvalidOperationException was unhandled 
    Message=You cannot call WebBrowser methods until it is in the visual tree. 
    StackTrace: 
    at Microsoft.Phone.Controls.WebBrowserDisconnected.NavigateToString(String pszHtml) 
    at Microsoft.Phone.Controls.WebBrowser.NavigateToString(String html) 
    at Google.AdMob.Ads.WindowsPhone7.WPF.DisplayAdBase.<.ctor>b__7(Object , RoutedEventArgs) 
    at System.Windows.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args) 
    at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String eventName) 

하는 I 앱에서 WP7 탐색 조리법을 사용하고 - http://create.msdn.com/en-us/education/catalog/article/nln-serv-wp7

내가 구글의 AdMob 컨트롤이 페이지 스택의 후면 탐색하는 동안 오류를 던지고있다 생각합니다. 따라서 페이지 1 (페이지 2) (Google AdMob 컨트롤 사용) (페이지 3)으로 이동 한 다음 홈 버튼을 눌러 페이지 1로 돌아 오면 뒤로 탐색 중에 페이지 2에서 오류가 발생합니다.

웹 브라우저 컨트롤이 Google 광고 컨트롤 내에 있기 때문에이를 해결하는 방법을 모르겠습니다. 이 문제를 겪고있는 사람은 누구입니까?

+0

Google AdMob 컨트롤은 WP7 용입니까? WebBrowser 지원은 데스크톱 Silverlight와 WP7 Silverlight에서 다릅니다. – jv42

+0

페이지에 컨트롤을 어떻게 추가하고 있습니까? –

+0

예외가 제기되는 이유에 대한 정보를 맨 아래에 추가했습니다. –

답변

1

필자도이 코드를 PhoneApplicationPage 코드에서 실행했습니다.

컨트롤 생성자가 WebBrowser.NavigateToString을 호출하는 것처럼 보이지만 예외로 허용되지 않는다고 말할 수 있습니다. 아무도이 코드를 실제로 테스트하지 않았 음은 분명합니다.

페이지 생성자에서 비슷한 작업을하고 있었고 페이지를 수정하는 방법은 WebBrowser.Loaded 이벤트를 수신 한 다음 WebBrowser.Navigate/NavigateToString을 호출하는 것입니다. 당신이 컨트롤의 소스 코드에 액세스 할 수있는 경우

, 그 일을하려고 - 생성자에서,

  1. 가에 WebBrowser.Loaded 이벤트 핸들러
  2. 을 등록 로컬 변수에 HTML 콘텐츠를 저장 당신의 App.xaml.cs를에 이 이벤트는 ...: 이벤트 핸들러는
3

빠른 솔루션 WebBrowser.NavigateToString에 HTML 콘텐츠를 전달ADMOB 제외 ...

// Code to execute on Unhandled Exceptions 
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) 
{ 
    if (System.Diagnostics.Debugger.IsAttached) 
    { 
     // An unhandled exception has occurred; break into the debugger 
     System.Diagnostics.Debugger.Break(); 
    } 

    else 
    { 
     //this is the ADMOB exception 
     if (e.ExceptionObject.Message == "You cannot call WebBrowser methods until it is in the visual tree.") 
      e.Handled = true; 

     else 
      MessageBox.Show(e.ExceptionObject.Message, "007", MessageBoxButton.OK); 
    } 
} 
+0

감사합니다. 이것은 해킹처럼 보인다. 나는 구글이 그것을 고치지 않은 것에 놀랐다. –

관련 문제