2016-04-10 11 views
0

Hiçbir anlam ifade etmeyen bir Xamarin Android bağlama hatası var!Xamarin Android ciltleme sınıfı FooInvoker arabirim ayarlayıcısı uygulamıyor

oluşturulan sınıf koçanları şunlardır:

[global::Android.Runtime.Register ("com/scichart/drawing/common/IRenderSurface", DoNotGenerateAcw=true)] 
internal class IRenderSurfaceInvoker : global::Java.Lang.Object, IRenderSurface 


[Register ("com/scichart/drawing/common/IRenderSurface", "", "Com.Scichart.Drawing.Common.IRenderSurfaceInvoker")] 
public partial interface IRenderSurface : global::Com.Scichart.Core.Framework.IInvalidatableElement, global::Com.Scichart.Core.Framework.IView { } 

// Metadata.xml XPath interface reference: path="/api/package[@name='com.scichart.core.framework']/interface[@name='IView']" 
[Register ("com/scichart/core/framework/IView", "", "Com.Scichart.Core.Framework.IViewInvoker")] 
public partial interface IView : global::Com.Scichart.Core.Framework.IContextProvider, global::Com.Scichart.Core.Framework.IHitTestable 
{ 

    int Visibility 
    { 
     // Metadata.xml XPath method reference: path="/api/package[@name='com.scichart.core.framework']/interface[@name='IView']/method[@name='getVisibility' and count(parameter)=0]" 
     [Register ("getVisibility", "()I", "GetGetVisibilityHandler:Com.Scichart.Core.Framework.IViewInvoker, SciChart.Android.Core")] get; 
     // Metadata.xml XPath method reference: path="/api/package[@name='com.scichart.core.framework']/interface[@name='IView']/method[@name='setVisibility' and count(parameter)=1 and parameter[1][@type='int']]" 
     [Register ("setVisibility", "(I)V", "GetSetVisibility_IHandler:Com.Scichart.Core.Framework.IViewInvoker, SciChart.Android.Core")] set; 
    } 
} 

Ne oluyor IView.Visibility (, set almak olan) bir taban sınıfı Android.View.Visibility çakıştığını olduğunu. Çakışmalar eklenti klasöründe çalıştım, ancak bu IRenderSurfaceInvoker sınıfı üretildi, kısmi değil ve IView arayüzünü düzgün bir şekilde uygulamıyor.

enter image description here

Normalde metadata.xml tesise görmezden gelirim ve kısmi sınıfta elle oluşturun ama IRenderSurfaceInvoker kısmi olmadığından bu mümkün değil.

FooInvoker nedir?

Herhangi bir fikrin var mı? :)

DÜZENLEME: GÜNCELLEME

aşağıda Sven-Michael Stube'da cevabı, bu kısmi çözüm sonra:

<!-- In EnumMethods.xml --> 
<mapping jni-interface="com/scichart/core/framework/IView"> 
    <method jni-name="getVisibility" parameter="return" clr-enum-type="Android.Views.ViewStates" /> 
    <method jni-name="setVisibility" parameter="visibility" clr-enum-type="Android.Views.ViewStates" /> 
</mapping> 

Ama bu şöyle oluşturuluyor IView arayüzünde sonuçlanır:

ve uyarı çıktısı Başka bir deyişle, yukarıdaki EnumMethods.xml bildirimi, bir eşleşme bulamadığı için ayarlayıcıyı siler.

Bunu nasıl ayıklayabilirim?

cevap

1

View vs IView sorunlarınızı çözmek için gerek kalmaz. Alıcının dönüş değerini ve ayarlayıcının parametresini Android.Views.ViewStates olarak EnumMethods.xml olarak geçersiz kılmalısınız. Bu , numaralı telefonu, probleminizi sürekli olarak çözebilir.

+0

Küçük bir sorun. jni-class jni-interface olmalıdır, aksi halde her iki düğüm bulunamaz. Ancak, o zaman bile getVisibility değerini değiştirir ve setVisibility öğesini eşleşmiyor düğüm yok Herhangi bir fikir? –

+0

, görünürlük adı verilen parametredir? Bu sadece bir tahmindi. –

+0

Java'da, evet öyle. C# hala bulamıyor. Ancak bunu p0 olarak adlandırdım ve rastgele çalıştım: 0 –