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" />
- Android: Ancho y altura del icono del iniciador en DP
- ¿Cómo puedo volver a utilizar este botón de Android?
- ¿Cómo puedo concatenar cadenas estáticas con recursos de cadena XML?
- Botón con diseño XML personalizado
- Simple XML Serializer no puede satisfacer el elemento
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.
- ¿Cómo puedo analizar un espacio de nombres con el analizador SAX?
- Android: state_enabled falta / no funciona?
- Cómo mostrar íconos de elemento en la barra de herramientas Android
- Analizar XML desde un sitio web a un dispositivo Android
- ¿Cómo puedo crear un diseño con pestañas completamente en XML?
- La diferencia entre: SAX Parser, XPath, DOM, XMLPullParser
- Color del borde del botón de Android
- Configuración de lint.xml de Android Studio
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(); }