【问题标题】:Xamarin.Forms - 'jobject' must not be IntPtr.Zero on PushAsyncXamarin.Forms - 'jobject' 在 PushAsync 上不能是 IntPtr.Zero
【发布时间】:2016-01-17 17:26:25
【问题描述】:

有人知道在将我的 Xamarin Forms 从 1.4 更新到 1.5 后,我收到了这个错误:

System.ArgumentException: 'jobject' 不得为 IntPtr.Zero

全栈错误:

10-19 06:47:47.893 D/Mono    ( 3675): Searching for '__android_log_print'.
10-19 06:47:47.896 I/MonoDroid( 3675): at Android.Views.ActionMode/ICallbackInvoker.n_OnActionItemClicked_Landroid_view_ActionMode_Landroid_view_MenuItem_ (intptr,intpt10-19 06:47:47.893 D/Mono    ( 3675): Probing '__android_log_print'.
10-19 06:47:47.893 D/Mono    ( 3675): Found as '__android_log_print'.
10-19 06:47:47.894 I/MonoDroid( 3675): UNHANDLED EXCEPTION:
10-19 06:47:47.896 I/MonoDroid( 3675): System.ArgumentException: 'jobject' must not be IntPtr.Zero.
10-19 06:47:47.896 I/MonoDroid( 3675): Parameter name: jobject
10-19 06:47:47.896 I/MonoDroid( 3675): at Android.Runtime.JNIEnv.CallVoidMethod (intptr,intptr) [0x00010] in /Users/builder/data/lanes/2058/58099c53/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:546
10-19 06:47:47.896 I/MonoDroid( 3675): at Android.Views.ActionModeInvoker.Finish () [0x0002d] in /Users/builder/data/lanes/2058/58099c53/source/monodroid/src/Mono.Android/platforms/android-22/src/generated/Android.Views.ActionMode.cs:804
10-19 06:47:47.896 I/MonoDroid( 3675): at Xamarin.Forms.Platform.Android.CellAdapter.OnActionItemClicked (Android.Views.ActionMode,Android.Views.IMenuItem) <IL 0x00008, 0x00044>
10-19 06:47:47.896 I/MonoDroid( 3675): at Android.Views.ActionMode/ICallbackInvoker.n_OnActionItemClicked_Landroid_view_ActionMode_Landroid_view_MenuItem_ (intptr,intptr,intptr,intptr) [0x00019] in /Users/builder/data/lanes/2058/58099c53/source/monodroid/src/Mono.Android/platforms/android-22/src/generated/Android.Views.ActionMode.cs:89
10-19 06:47:47.896 I/MonoDroid( 3675): at (wrapper dynamic-method) object.ecb01028-fd89-41d7-b184-af818f2dde3e (intptr,intptr,intptr,intptr) <IL 0x0001d, 0x00037>
10-19 06:47:47.899 W/art     ( 3675): JNI RegisterNativeMethods: attempt to register 0 native methods for md52ce486a14f4bcd95899665e9d932190b.JavaProxyThrowable
10-19 06:47:47.900 D/AndroidRuntime( 3675): Shutting down VM

当我尝试这样做时出现:

await App.MyTabbedPageMenu.orderNavigationPage.PushAsync(new DetalhesPedidoView(webPedidoModel));

仅在 Android 上显示在 IOS 上一切正常。

谢谢

【问题讨论】:

  • 您能否再解释一下您的设置。您如何从 TabbedPageMenu 转到 NavigationPage。
  • 嗨 @Adam 我有一个 TabbebPage 对吗?我的 App.cs 中有变量,因为我需要在我的选项卡中进行更改。每个选项卡都有一个 NavigationPage 并在 ContentPage 或 CarouselPages 内。在这种情况下,我有我的导航和标签页的实例,所以我只需要 pushAsync 我要显示的新页面,但我不知道为什么这个错误只出现在 Android 上

标签: xamarin xamarin.android xamarin.forms


【解决方案1】:

感谢 Xamarin 论坛的 Torben Kruse 回答问题并解决了问题

await Task.Yield()

在推送页面之前。

更多信息:https://forums.xamarin.com/discussion/54112/jobject-must-not-be-intptr-zero-on-pushasync

【讨论】:

  • 很高兴看到您有解决方案。那些 'jobject' 不能是 IntPtr.Zero 在 Xamarin 中很常见并且很难追踪。 Jason Smith 曾经说过,他的个人使命是解决所有这些问题 :)
【解决方案2】:

await Task.Yield() 是一个有时它不起作用的选项,在我的情况下,它在收集垃圾后解决

GC.collect();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 2023-03-15
    • 2017-08-26
    • 2016-06-29
    • 1970-01-01
    • 2020-05-21
    • 2014-08-28
    相关资源
    最近更新 更多