Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法从源类型强制转换为目标类型_C#_Android_Xamarin.android_Xamarin - Fatal编程技术网

C# 无法从源类型强制转换为目标类型

C# 无法从源类型强制转换为目标类型,c#,android,xamarin.android,xamarin,C#,Android,Xamarin.android,Xamarin,我是C#新手,所以我在做一些教程。 当我尝试从Xamarin Studio运行Android教程项目时,出现以下错误: 引发System.InvalidCastException。无法从源类型强制转换为目标类型 这是给出错误的代码: public Java.Lang.Object [] GetSections () { var intPtr = JNIEnv.NewArray (sections.ToArray ()); var array = new JavaArray<

我是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;
}
public Java.Lang.Object[]GetSections()
{ 
var intPtr=JNIEnv.NewArray(sections.ToArray());
var数组=新的JavaArray(intPtr,JniHandleOwnership.TransferLocalRef);
返回(Java.Lang.Object[])数组;
}

如何修复此问题?

您正在将
JavaArray
转换为
Java.Lang.Object[]

GetSessions()
的返回类型更改为
JavaArray

公共JavaArray GetSections() { var intPtr=JNIEnv.NewArray(sections.ToArray()); 返回新的JavaArray(intPtr、jnihandleowner.TransferLocalRef); }
第二个问题可能意味着您实现了一个interfacit,其中GetSections方法需要返回类型Java.Lang.Object

如果你自己制作了界面,那么你可能会犯与此方法相同的错误

因此:

公共JavaArray GetSections() { var intPtr=JNIEnv.NewArray(sections.ToArray()); 返回新的JavaArray(intPtr、jnihandleowner.TransferLocalRef); } 您的界面应该如下所示:

public JavaArray<Java.Lang.Object> GetSections ();
公共JavaArray GetSections();
我想你犯了两次同样的错误

现在错误变为:错误CS0738:
EmployeeDirectory.Android.PeopleGroupsAdapter'没有实现接口成员
Android.Widget.ISectionIndexer.GetSections()'和最佳实现候选者
EmployeeDirectory.Android.PeopleGroupsAdapter.GetSections()“返回类型
Android.Runtime.JavaArray”与接口成员返回类型“Java.Lang.Object[]”不匹配。请同时更改接口上GetSections()的返回类型。类必须与接口匹配…在接口上我可以在什么类型的文件中找到GetSections()?这是一个教程代码,所以我还不知道所有的代码。我应该在哪里编辑界面代码?我到处都找不到。是否有一种方法可以使返回类型为:“return(Java.Lang.Object[])array;”?是的,这是可能的,但这不是你想要的。。可以返回一个对象数组,但只希望返回一个对象。也许您可以尝试使用@Override注释并更改方法的返回类型,但我不确定这是否有效。。或者,一个非常丑陋的解决方案是每次返回一个数组,其中只有一个对象(不推荐),但请先尝试覆盖,如果它不起作用,请告诉我
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 ();