Xamarin Android与Xamarin.Auth崩溃

时间:2017-06-24 23:57:08

标签: xamarin xamarin.android

我正在使用Xamarin.Auth登录Facebook。我为iOS和Android创建了一个单独的渲染器。 在auth.Completed中,我在自定义渲染器的PCL类中调用AfterLogin(UserInfo)方法。这会做一些额外的工作,然后调用

App.Current.MainPage = new NavigationPage(new MainPage());

看起来页面构造正确并且所有方法都正确返回,直到抛出异常未处理为止。唯一的文字是“未处理的异常发生。”

在iOS中,一切正常。它调用完全相同的PCL代码。

我不知道它指的是什么观点。

修改 来自ADB的堆栈跟踪

  I/MonoDroid(11638): UNHANDLED EXCEPTION:

 I/MonoDroid(11638): Java.Lang.IllegalArgumentException: No view found for id 0x4 (unknown) for fragment FragmentContainer{436fa3e8 #0 id=0x4}

I/MonoDroid(11638):   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <d18287e1d683419a8ec3216fd78947b9>:0 

I/MonoDroid(11638):   at Java.Interop.JniEnvironment+InstanceMethods.CallBooleanMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method) [0x00068] in <5716a943049b49ca928a3a1c8d2386f4>:0 

I/MonoDroid(11638):   at Android.Runtime.JNIEnv.CallBooleanMethod (System.IntPtr jobject, System.IntPtr jmethod) [0x0000e] in <33e6e739ac344166b157e323586f11a1>:0 

I/MonoDroid(11638):   at Android.Support.V4.App.FragmentManagerInvoker.ExecutePendingTransactions () [0x00033] in <7e083afc7c9045f59e01d9c14931060d>:0 

I/MonoDroid(11638):   at Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer.Dispose (System.Boolean disposing) [0x00083] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\AppCompat\NavigationPageRenderer.cs:135 

I/MonoDroid(11638):   at Java.Lang.Object.Dispose () [0x00000] in <33e6e739ac344166b157e323586f11a1>:0 

I/MonoDroid(11638):   at Xamarin.Forms.Platform.Android.AppCompat.Platform.SetPage (Xamarin.Forms.Page newRoot) [0x0003f] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\AppCompat\Platform.cs:226 

I/MonoDroid(11638):   at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.InternalSetPage (Xamarin.Forms.Page page) [0x0001a] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:370 

I/MonoDroid(11638):   at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.AppOnPropertyChanged (System.Object sender, System.ComponentModel.PropertyChangedEventArgs args) [0x00012] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:321 

I/MonoDroid(11638):   at Xamarin.Forms.BindableObject.OnPropertyChanged (System.String propertyName) [0x0000a] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\BindableObject.cs:136 

I/MonoDroid(11638):   at Xamarin.Forms.Element.OnPropertyChanged (System.String propertyName) [0x00000] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\Element.cs:380 

I/MonoDroid(11638):   at Xamarin.Forms.Application.set_MainPage (Xamarin.Forms.Page value) [0x0008b] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\Application.cs:90 

I/MonoDroid(11638):   at App.App.Instance_DataIsReady (System.Object sender, App.EventArguments.DataIsReadyEventArgs e) [0x0004d] in <9b95d86146df403c82b64e5a8ab6a9cf>:0 

I/MonoDroid(11638):   at (wrapper delegate-invoke) <Module>:invoke_void_object_DataIsReadyEventArgs (object,App.EventArguments.DataIsReadyEventArgs)

I/MonoDroid(11638):   at App.DataCache.OnDataIsReady (App.EventArguments.DataIsReadyStates state) [0x0001b] in <9b95d86146df403c82b64e5a8ab6a9cf>:0 

I/MonoDroid(11638):   at App.DataCache.set_PlayerWinnings (System.Collections.Generic.IEnumerable`1[T] value) [0x00012] in <9b95d86146df403c82b64e5a8ab6a9cf>:0 

I/MonoDroid(11638):   at App.DataCache+<RefreshData>d__37.MoveNext () [0x00351] in <9b95d86146df403c82b64e5a8ab6a9cf>:0 

I/MonoDroid(11638): --- End of stack trace from previous location where exception was thrown ---

2 个答案:

答案 0 :(得分:0)

哪个版本的Xamarin.Auth? 为什么实现Xamarin.Forms支持,如果它自版本1.5.0以来已经在库本身?

要获得更多帮助,我们需要您身边的更多信息(以及您的代码)...

答案 1 :(得分:0)

问题原来是MainPage被分配了两次。它与Auth没有关系。