2014-06-26 82 views
1

我试图将端口achrtengine库移植到Xamarin.Droid。将achartengine移植到Xamarin

我所做的是: -

1 - 创建一个新的Android的Java绑定图书馆项目。 2-将添加到Jars文件夹的.jar。 3-设置构建动作EmbededJar

,但得到这个错误: - 此行

'Pan': member names cannot be the same as their enclosing type 

public event EventHandler Pan { 
      add { 
       global::Java.Interop.EventHelper.AddEventHandler<global::Org.Achartengine.Tools.IPanListener, global::Org.Achartengine.Tools.IPanListenerImplementor>(
         ref weak_implementor_AddPanListener, 
         __CreateIPanListenerImplementor, 
         AddPanListener, 
         __h => __h.Handler += value); 
      } 
      remove { 
       global::Java.Interop.EventHelper.RemoveEventHandler<global::Org.Achartengine.Tools.IPanListener, global::Org.Achartengine.Tools.IPanListenerImplementor>(
         ref weak_implementor_AddPanListener, 
         global::Org.Achartengine.Tools.IPanListenerImplementor.__IsEmpty, 
         RemovePanListener, 
         __h => __h.Handler -= value); 
      } 
     } 

我想这是因为类名是潘太

// Metadata.xml XPath class reference: path="/api/package[@name='org.achartengine.tools']/class[@name='Pan']" 
    [global::Android.Runtime.Register ("org/achartengine/tools/Pan", DoNotGenerateAcw=true)] 
    public partial class Pan : global::Org.Achartengine.Tools.AbstractTool { 

更新: -

我插入这条线来解决这个问题

<attr path="/api/package[@name='org.achartengine.tools']/class[@name='Pan']" name="name">PanClass</attr> 

更改类的名称。

,但得到这些错误: -

Error CS0019: Operator '==' cannot be applied to operands of type 'AChartEngine.Renderer.XYSeriesRenderer.FillOutsideLine.Type' and 'System.Type' (CS0019) (AChartEngineBindings) 

Error CS1503: Argument 2: cannot convert from 'string' to 'System.IntPtr' (CS1503) (AChartEngineBindings) 

有谁知道如何解决这个问题?!

任何帮助都很有用。 谢谢。

回答

3

我发现这里的答案:http://forums.xamarin.com/discussion/1935/achartengine-org-jar-binding-error

你应该添加那些元数据:

<attr path="/api/package[@name='org.achartengine.renderer']/class[@name='XYSeriesRenderer.FillOutsideLine']/method[@name='getType' and count(parameter)=0]" name="managedName">GetBehaviorType</attr> 
    <attr path="/api/package[@name='org.achartengine.renderer']/class[@name='XYSeriesRenderer.FillOutsideLine.Type']" name="managedName">FillOutsideLineBehaviorType</attr> 
    <attr path="/api/package[@name='org.achartengine']" name="managedName">AChartEngine</attr> 
    <attr path="/api/package[@name='org.achartengine.chart']" name="managedName">AChartEngine.Chart</attr> 
    <attr path="/api/package[@name='org.achartengine.model']" name="managedName">AChartEngine.Model</attr> 
    <attr path="/api/package[@name='org.achartengine.renderer']" name="managedName">AChartEngine.Renderer</attr> 
    <attr path="/api/package[@name='org.achartengine.tools']" name="managedName">AChartEngine.Tools</attr> 
    <attr path="/api/package[@name='org.achartengine.util']" name="managedName">AChartEngine.Util</attr> 

    <attr path="/api/package[@name='org.achartengine.tools']/class[@name='Pan']/method[@name='addPanListener']" name="eventName">PanEvent</attr> 

到FillOutsideLine.GetType()和FillOutsideLine.Type重命名为GetBehaviorType()和FillOutsideLineBehaviorType。

并更改事件名称。

我已经将源代码添加到github中,例如:https://github.com/mostafa-elabady/Xamarin_achartengine