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(); } 
  • Xml a json en android
  • XML dentro de un recurso de cadena de Android?
  • convertir la interfaz de usuario de Android a código
  • Android define la forma XML como dibujable mediante programación
  • Texto del botón que no consigue centrado verticalmente en botón
  • android cómo establecer el icono de la casilla de verificación en el derecho?
  • ¿Cómo hacer lo contrario de atributo de preferencia android: dependencia?
  • Simple XML Serializer no puede satisfacer el elemento
  • Buen constructor de interfaz de usuario para Android
  • ¿Qué significa esto "xmlns: xliff"? XML
  • Obligar a un botón a permanecer en la parte inferior de la pantalla del teléfono
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.