【问题标题】:Xamarin - .aar Java Binding - The name '[method name]' does not exist in the current contextXamarin - .aar Java 绑定 - 当前上下文中不存在名称“[方法名称]”
【发布时间】:2016-10-24 20:36:11
【问题描述】:

我正在尝试为 Facebook Notification .aar 库创建绑定。

但是我得到了编译错误:

严重性代码描述项目文件行抑制状态 错误 CS0103 当前不存在名称“CreateAsset” 上下文 FBNotifications C:\Users\jakub\documents\visual studio 2015\Projects\FBNotifications\FBNotifications\obj\Release\generated\src\Com.Facebook.Notifications.Internal.Asset.Handlers.BitmapAssetHandler.cs 344 活动

严重性代码描述项目文件行抑制状态 错误 CS0103 当前不存在名称“CreateView” 上下文 FBNotifications C:\Users\jakub\documents\visual studio 2015\Projects\FBNotifications\FBNotifications\obj\Release\generated\src\Com.Facebook.Notifications.Internal.Asset.Handlers.BitmapAssetHandler.cs 350 活动

有问题的方法如下:

// This method is explicitly implemented as a member of an instantiated Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetHandler
        global::Java.Lang.Object global::Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetHandler.CreateAsset (global::Org.Json.JSONObject p0, global::Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetCache p1)
        {
            return global::Java.Interop.JavaObjectExtensions.JavaCast<Java.Lang.Object>(CreateAsset (p0, p1));
        }

        // This method is explicitly implemented as a member of an instantiated Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetHandler
        global::Android.Views.View global::Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetHandler.CreateView (global::Java.Lang.Object p0, global::Android.Content.Context p1)
        {
            return CreateView (global::Java.Interop.JavaObjectExtensions.JavaCast<global::Com.Facebook.Notifications.Internal.Asset.Handlers.BitmapAssetHandler.BitmapAsset>(p0), p1);
        }

我可以看到代码问题可以这样修复:

// This method is explicitly implemented as a member of an instantiated Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetHandler
        global::Java.Lang.Object global::Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetHandler.CreateAsset (global::Org.Json.JSONObject p0, global::Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetCache p1)
        {
            return global::Java.Interop.JavaObjectExtensions.JavaCast<Java.Lang.Object>(((AssetManager.IAssetHandler)this).CreateAsset (p0, p1));
        }

    // This method is explicitly implemented as a member of an instantiated Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetHandler
    global::Android.Views.View global::Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetHandler.CreateView (global::Java.Lang.Object p0, global::Android.Content.Context p1)
    {
        return ((AssetManager.IAssetHandler)this).CreateView (global::Java.Interop.JavaObjectExtensions.JavaCast<global::Com.Facebook.Notifications.Internal.Asset.Handlers.BitmapAssetHandler.BitmapAsset>(p0), p1);
    }

我认为为 BitmapAssetHandler 创建一个部分类并将更正的方法放在那里,同时在 Metadata.xml 中删除它会修复它,但它看起来不像。

<remove-node path="/api/package[@name='com.facebook.notifications.internal.asset.handlers']/class[@name='BitmapAssetHandler']/method[@name='CreateAsset']" />
  <remove-node path="/api/package[@name='com.facebook.notifications.internal.asset.handlers']/class[@name='BitmapAssetHandler']/method[@name='CreateView']" />

如果我这样做,那么我会收到错误,即方法存在两次(不知何故,它们不会从生成的代码中删除)。我希望这不是一个太复杂的问题。我的方法正确吗?或者是否需要做其他事情才能使其正常工作。

【问题讨论】:

    标签: c# android xamarin.android java-binding


    【解决方案1】:

    remove-node 元素可以解决问题。

    <remove-node path="/api/package[@name='com.facebook.notifications.internal.asset.handlers']/class[@name='BitmapAssetHandler']" />
    

    【讨论】:

    • 嘿伙计,您对绑定有很多经验吗?我有一些具体问题迫切需要咨询某人,我正在努力寻找可以帮助我的人?​​
    • @Killua 嘿,只是一般的体验。随意张贴你的问题,所以它应该得到排序。
    猜你喜欢
    • 2016-05-23
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 2014-04-22
    相关资源
    最近更新 更多