Xamarin 找不到用于。。。(System.IntPtr、Android.Runtime.JniHandleOwnership)

Xamarin 找不到用于。。。(System.IntPtr、Android.Runtime.JniHandleOwnership),xamarin,xamarin.android,Xamarin,Xamarin.android,在过去的几天里,我开始发现上面的错误。 不是到处都有,而是到处都有。在一些我甚至不能把这个奇怪的构造器放进去的地方, 就像下面的调用堆栈一样 我看到了答案,但我相信这不是我的情况。它只是开始到处发生。特别是当我设置断点时 以下是一个例子: 10-26 15:34:58.895 E/mono-rt (13841): [ERROR] FATAL UNHANDLED EXCEPTION: System.NotSupportedException: Unable to activate instance

在过去的几天里,我开始发现上面的错误。
不是到处都有,而是到处都有。在一些我甚至不能把这个奇怪的构造器放进去的地方, 就像下面的调用堆栈一样

我看到了答案,但我相信这不是我的情况。它只是开始到处发生。特别是当我设置断点时

以下是一个例子:

10-26 15:34:58.895 E/mono-rt (13841): [ERROR] FATAL UNHANDLED EXCEPTION: System.NotSupportedException: Unable to activate instance of type Android.Views.View+IOnClickListenerImplementor from native handle 7960001d ---> System.MissingMethodException: No constructor found for Android.Views.View+IOnClickListenerImplementor::.ctor(System.IntPtr, Android.Runtime.JniHandleOwnership) ---> Java.Interop.JavaLocationException: Exception of type 'Java.Interop.JavaLocationException' was thrown.
10-26 15:34:58.895 E/mono-rt (13841): Java.Lang.Error: Exception of type 'Java.Lang.Error' was thrown.
10-26 15:34:58.895 E/mono-rt (13841): 
10-26 15:34:58.895 E/mono-rt (13841):   --- End of managed exception stack trace ---
10-26 15:34:58.895 E/mono-rt (13841): java.lang.Error: Java callstack:
10-26 15:34:58.895 E/mono-rt (13841):   at mono.android.view.View_OnClickListenerImplementor.n_onClick(Native Method)
10-26 15:34:58.895 E/mono-rt (13841):   at mono.android.view.View_OnClickListenerImplementor.onClick(View_OnClickListenerImplementor.java:29)
10-26 15:34:58.895 E/mono-rt (13841):   at android.view.View.performClick(View.java:4475)
10-26 15:34:58.895 E/mono-rt (13841):   at android.view.View$PerformClick.run(View.java:18786)
10-26 15:34:58.895 E/mono-rt (13841):   at android.os.Handler.handleCallback(Handler.java:730)
10-26 15:34:58.895 E/mono-rt (13841):   at android.os.Handler.dispatchMessage(Handler.java:92)
10-26 15:34:58.895 E/mono-rt (13841):   at android.os.Looper.loop

根据我的经验,当应用程序运行时从内存中释放对象时,就会发生这种情况。然后,例如,如果返回到该页面,并且需要由Mono重新创建对象,则需要指定该构造函数

答案应该是你问题的答案。重要部分如下:

所以Mono for Android创建了一个适当类型的实例…通过 (IntPtr,jnihandleowner)构造函数,并生成一个错误 如果找不到此构造函数

(在本例中)TextView构造函数完成执行后 LogTextBox的ACW构造函数将执行,此时Mono 安卓会说:“啊哈!我们已经为此创建了一个C#实例 Java实例”,然后将在 已创建的实例。也就是说,对于一个例子,两个 将执行构造函数:IntPtr、jnihandleowner 构造函数和(后面的)上下文(Context,IAttributeSet,int) 构造器


我很想成为更好的帮助者,但是如果没有任何代码片段,就很难说了。尝试查找实现了
IOnClickListenerImplementor
的对象,看看是否可以在侦听器的实现中添加构造函数。。。。祝你好运

你找到解决办法了吗?3年后,我面临这个问题。来自Xamarin站点Help-Premature Dispose()调用的这段文档在JNI句柄和相应的C#实例之间有一个映射。Dispose()会破坏此映射。如果一个JNI句柄在映射被破坏后进入托管代码,它看起来像Java激活,并且(IntPtr,jnihandleowner)构造函数将被检查并调用。如果构造函数不存在,则会引发异常。仅供参考-我也打了这个,并了解到,如果这个构造器正在寻找,是非常错误的。在我的例子中,我有一个本地副本,它以某种方式覆盖了IntPtrHandle的基本版本,如下所示:public IntPtr Handle{get;}…删除该属性可以使映射正常工作。谢谢@Dibzmania的精彩报道。大家好,有人找到了解决方案。“无法从本机句柄0x7fd2839f64(密钥句柄0x1189fc)激活Xamarin.Forms.Platform.Android.ListViewAdapter类型的实例。”@PratiusDubey请在Xamarin.Forms GitHub问题跟踪器上打开一个错误