Xamarin.Android:以下方法或属性

时间:2017-03-14 01:31:51

标签: c# compiler-errors xamarin.android jnienv

我收到以下错误:

  

以下方法或属性之间的调用不明确:'Java.Interop.JavaObjectExtensions.JavaCast(Android.Runtime.IJavaObject)'和'Android.Runtime.Extensions.JavaCast(Android.Runtime.IJavaObject)'

使用此代码:

// Get a pointer to the Java class.
IntPtr jClass = JNIEnv.FindClass("com/companyname/appname/JniClass");

// constructor.
IntPtr defaultConstructor = JNIEnv.GetMethodID(jClass,
                                               "<init>",
                                               "()V");
// new instance of the class.
IntPtr instance = JNIEnv.NewObject(jClass, defaultConstructor);

// Find method.
IntPtr methodID = JNIEnv.GetMethodID(jClass,   "getResult",    "()Ljava/lang/String;");

// Call the method.
IntPtr resultPtr = JNIEnv.CallObjectMethod(instance, methodID);

// Convert the pointer to return value
Java.Lang.Object jObject = new Java.Lang.Object(resultPtr, JniHandleOwnership.TransferLocalRef);
Java.Lang.String result = jObject.JavaCast<Java.Lang.String>(); // Compiler Error

我很好奇为什么编译器认为这段代码是错误的。

2 个答案:

答案 0 :(得分:0)

如果您有两个具有相同名称但在不同类中的方法,并且Visual Studio需要知道您要使用哪个方法,则会发生这种情况。

将鼠标悬停在代码上的错误上,然后单击“灯光”图标并选择要使用的方法。您也可以左键单击代码上的错误,然后按(ctrl +。(dot))并选择所需的方法。

enter image description here

enter image description here

答案 1 :(得分:0)

只为那些仍然得到同样错误的人!

在我的情况下,我删除了对命名空间

的引用
Android.Runtime

可能在你的情况下

Android.Runtime.Extension

可能对某人有帮助!