我是C#的新手,所以我正在做一些教程。 当我尝试从Xamarin Studio运行教程Android项目时出现此错误:
抛出了System.InvalidCastException。无法从源类型转换为目标类型。
这是给出错误的代码:
public Java.Lang.Object [] GetSections ()
{
var intPtr = JNIEnv.NewArray (sections.ToArray ());
var array = new JavaArray<Java.Lang.Object> (intPtr, JniHandleOwnership.TransferLocalRef);
return (Java.Lang.Object []) array;
}
我该如何解决这个问题?
答案 0 :(得分:0)
您正在将JavaArray<Java.Lang.Object>
投射到Java.Lang.Object []
。
将GetSessions()
的返回类型更改为JavaArray<Java.Lang.Object>
public JavaArray<Java.Lang.Object> GetSections ()
{
var intPtr = JNIEnv.NewArray (sections.ToArray ());
return new JavaArray<Java.Lang.Object> (intPtr, JniHandleOwnership.TransferLocalRef);
}
答案 1 :(得分:0)
你的第二个问题可能意味着你已经实现了一个具有GetSections方法需要返回类型的Java.Lang.Object的界面。
如果您自己创建了界面,那么您可能会犯到与此方法相同的错误。
所以:
public JavaArray<Java.Lang.Object> GetSections ()
{
var intPtr = JNIEnv.NewArray (sections.ToArray ());
return new JavaArray<Java.Lang.Object> (intPtr, JniHandleOwnership.TransferLocalRef);
}
,您的界面应如下所示:
public JavaArray<Java.Lang.Object> GetSections ();
我认为你两次犯了同样的错误