SurfaceView personalizado que causa NoSuchMethodException

Tengo una vista de encargo que extiende SurfaceView. El diseño XML es

<com.myPackage.MyCustomView 

android: id = "@ + id / mycview" android: layout_width = "fill_parent" android: layout_height = "fill_parent" />

La clase es:

  public class MyCustomView extends SurfaceView{ public float[] xpositions; public float[] ypositions; public String[] units; public MyCustomView(Context context, float[] xpos, float[] ypos,String[] u) { super(context); xpositions=xpos; ypositions =ypos; units=u; } ... } 

En el contexto Actividad para este método tengo la línea siguiente

 MyCustomView mv = (MyCustomView)findViewById(R.id.mycview); 

La salida LogCat tiene los siguientes

 01-30 01:51:12.124: ERROR/AndroidRuntime(4934): Caused by: java.lang.NoSuchMethodException:MyCustomView(Context,AttributeSet) 01-30 01:51:12.124: ERROR/AndroidRuntime(4934): at java.lang.Class.getMatchingConstructor(Class.java:674) 01-30 01:51:12.124: ERROR/AndroidRuntime(4934): at java.lang.Class.getConstructor(Class.java:486) 01-30 01:51:12.124: ERROR/AndroidRuntime(4934): at android.view.LayoutInflater.createView(LayoutInflater.java:475) 

Por alguna razón mi constructor está causando esta excepción. Agradecería cualquier ayuda para encontrar lo que está mal con el código.

UPDATE: He cambiado el constructor para agregar AttributeSet y en mi actividad escribió lo siguiente:

  XmlPullParser parser = getResources().getXml(R.id.mycview); AttributeSet attributes = Xml.asAttributeSet(parser); MyCustomView cv =new MyCustomView(this,attributes,xx,yy,uu); cv= (MyCustomView)findViewById(R.id.mycview); 

Pero obtengo la misma salida logcat.

No tiene el constructor correcto MyCustomView (Context, AttributeSet)

Debe crear los constructores siguientes si desea inflar las vistas y crear una nueva en el código. utilice initYourStuff() para init sus cosas;), también puede parametrizarlos por supuesto …

 public MyCustomView(Context context) { super(context); this.context = context; initYourStuff(); } public MyCustomView(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; initYourStuff(); } public MyCustomView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); this.context = context; initYourStuff(); } 
  • Android.view.InflateException: Línea de archivo XML binario # 12: Error al inflar la clase <unknown>
  • Descripción de los diseños de diálogo de Android
  • Fondo Android + texto + icono para un botón
  • Android: Caja blanca no deseada en la parte superior de la pantalla (barra de herramientas?)
  • Android string-array con todos los países en diferentes idiomas
  • Establecer el estilo de fuente en negrita del menú de la barra de herramientas appcompat
  • Botón uniformemente espaciado en Layout
  • Problema al analizar cadena xml en java
  • Cómo establecer la línea como un fondo utilizando xml (forma) a continuación para EditText?
  • android cómo establecer el icono de la casilla de verificación en el derecho?
  • Valores XML de Android - Conjunto de cadenas :: ¿Colocación de una cotización en el valor?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.