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" />
- Cómo acceder a la estructura de cadenas xml siguiente estructura
- Referencia a una cadena en un recurso de matriz de cadena con xml
- Obtener el id de una vista como String en el evento onClick
- Eclipse para convertir atributos XML en entradas de estilo
- Android XML: Centrando una vista en el diseño relativo- android: layout_centerHorizontal = "true" no funciona?
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.
- Tutorial en el analizador DOM
- Mover mi barra de progreso con una imagen android
- Botón personalizado en la barra de título del cuadro de diálogo
- ¿Cómo uso los recursos predeterminados de Android en mi layout xml?
- Error del proyecto AIDE y Eclipse
- Diseño de notificaciones personalizadas de Android con RemoteViews
- Android Hexágono forma botón que tiene hexágono táctil
- ¿Cómo puedo concatenar cadenas estáticas con recursos de cadena XML?
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(); }