找不到...的构造函数(System.IntPtr,Android.Runtime.JniHandleOwnership)

时间:2014-10-26 13:43:25

标签: xamarin xamarin.android

在过去的几天里,我开始收到上述错误 不是在这里那里,而是在各处。在某些地方,我甚至无法把这个奇怪的构造函数放进去, 就像下面的调用堆栈一样。

我在https://stackoverflow.com/a/10603714/106248中看到了答案,但我相信这不是我的理由。它只是开始发生在任何地方。特别是当我提出断点时。

以下是一个例子:

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

1 个答案:

答案 0 :(得分:6)

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

John Pryor answer you are referring to应该是您问题的答案。重要的部分如下:

  

因此,Mono for Android会创建相应类型的实例... via   (IntPtr,JniHandleOwnership)构造函数,并生成错误   如果找不到这个构造函数。

     

一旦(在这种情况下)TextView构造函数完成执行,   LogTextBox的ACW构造函数将执行,此时Mono for   Android会变成“啊哈!我们已经为此创建了一个C#实例   Java实例“,然后将调用相应的构造函数   已创建的实例。这意味着对于单个实例,两个   构造函数将被执行:(IntPtr,JniHandleOwnership)   构造函数,(稍后)(Context,IAttributeSet,int)   构造

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