Foros del Web » Programando para Internet » Android »

[SOLUCIONADO] ClassNotFoundException PathShape android

Estas en el tema de ClassNotFoundException PathShape android en el foro de Android en Foros del Web. Buenas tardes a todos, estoy haciendo un ejercicio de un libro para aprender android y me he topado con el siguiente problema: Hice una vista ...
  #1 (permalink)  
Antiguo 19/05/2014, 15:01
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 3 meses
Puntos: 11
Pregunta ClassNotFoundException PathShape android

Buenas tardes a todos, estoy haciendo un ejercicio de un libro para aprender android y me he topado con el siguiente problema: Hice una vista personalizada para poder crear una figura con un ShapeDrawable basandome en un PathShape, pero incluso desde el editor grafico de layouts no se puede instanciar la vista debido a que aparece este error:

java.lang.ClassNotFoundException: android.graphics.drawable.shapes.PathShape
at com.android.ide.eclipse.adt.internal.resources.man ager.ProjectClassLoader.findClass(ProjectClassLoad er.java:109)
at java.lang.ClassLoader.loadClass(ClassLoader.java:3 06)
at java.lang.ClassLoader.loadClass(ClassLoader.java:2 47)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Cla ss.java:2398)
at java.lang.Class.getConstructor0(Class.java:2708)
at java.lang.Class.getConstructor(Class.java:1659)
at com.android.ide.eclipse.adt.internal.editors.layou t.ProjectCallback.instantiateClass(ProjectCallback .java:362)
at com.android.ide.eclipse.adt.internal.editors.layou t.ProjectCallback.loadView(ProjectCallback.java:18 9)
at android.view.BridgeInflater.loadCustomView(BridgeI nflater.java:207)



He buscado mucho en internet tratando de solucionarlo pero aunque encuentro temas similares no he podido solucionarlo, ya que las soluciones a los temas que he encontrado no han funcionado en mi caso, este es mi codigo:



public class VistaJuego extends View {


public VistaJuego(Context context, AttributeSet attrs) {
super(context, attrs);
Drawable drawableNave, drawableAsteroide, drawableMisil;
//drawableAsteroide=context.getResources().getDrawab le(R.drawable.asteroide1);
asteroides =new Vector<Grafico>();

Path pathAsteroide=new Path();
pathAsteroide.moveTo((float)0.3,(float)0.0);
pathAsteroide.moveTo((float)0.6,(float)0.0);
pathAsteroide.moveTo((float)0.6,(float)0.3);
pathAsteroide.moveTo((float)0.8,(float)0.2);
pathAsteroide.moveTo((float)1.0,(float)0.4);
pathAsteroide.moveTo((float)0.8,(float)0.6);
pathAsteroide.moveTo((float)0.9,(float)0.9);
pathAsteroide.moveTo((float)0.8,(float)1.0);
pathAsteroide.moveTo((float)0.4,(float)1.0);
pathAsteroide.moveTo((float)0.0,(float)0.6);
pathAsteroide.moveTo((float)0.0,(float)0.2);
pathAsteroide.moveTo((float)0.3,(float)0.0);
//pathAsteroide.close();
ShapeDrawable dAsteroide=new ShapeDrawable(new PathShape(pathAsteroide, 1, 1) );
dAsteroide.getPaint().setColor(Color.WHITE);
dAsteroide.getPaint().setStyle(Style.STROKE);
dAsteroide.setIntrinsicWidth(50);
dAsteroide.setIntrinsicHeight(50);
drawableAsteroide=dAsteroide;
setBackgroundColor(Color.BLACK);

for (int i = 0; i < numAsteroides; i++) {
Grafico asteroide=new Grafico(this, drawableAsteroide);
asteroide.setIncY(Math.random()*4-2);
asteroide.setIncX(Math.random()*4-2);
asteroide.setAngulo((int)(Math.random()*360));
asteroide.setRotacion((int)(Math.random()*8-4));
asteroides.add(asteroide);
}
}


espero alguien pueda ayudarme.

Saludos
  #2 (permalink)  
Antiguo 19/05/2014, 17:55
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 3 meses
Puntos: 11
Respuesta: ClassNotFoundException PathShape android

He encontrado un error inicie el path con pathAsteroide.moveTo((float)0.3,(float)0.0); y segui con moveTo en el resto de las lineas cuando deberia ser lineTo:

He corregido pero el problema continua, mismo error. Esta es la corrección:

pathAsteroide.moveTo((float)0.3,(float)0.0);
pathAsteroide.lineTo((float)0.6,(float)0.0);
pathAsteroide.lineTo((float)0.6,(float)0.3);
pathAsteroide.lineTo((float)0.8,(float)0.2);
pathAsteroide.lineTo((float)1.0,(float)0.4);
pathAsteroide.lineTo((float)0.8,(float)0.6);
pathAsteroide.lineTo((float)0.9,(float)0.9);
pathAsteroide.lineTo((float)0.8,(float)1.0);
pathAsteroide.lineTo((float)0.4,(float)1.0);
pathAsteroide.lineTo((float)0.0,(float)0.6);
pathAsteroide.lineTo((float)0.0,(float)0.2);
pathAsteroide.lineTo((float)0.3,(float)0.0);

Espero alguien pueda ver eso y ayudarme, saludos.
  #3 (permalink)  
Antiguo 20/05/2014, 11:42
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 3 meses
Puntos: 11
Respuesta: ClassNotFoundException PathShape android

Buenas tardes, por fin despues de varios días logre resolverlo. El error si estaba en la linea que marque en negritas:
ShapeDrawable dAsteroide=new ShapeDrawable(new PathShape(pathAsteroide, 1, 1) ); y es debido a que el unico constructor de la clase PathShape pide dos float
PathShape(Path path, float stdWidth, float stdHeight)
Recuerden que en java las constantes float se deben declarar explicitamente es decir si colocan
new PathShape(pathAsteroide, 1.0, 1.0)
el editor les marcara error porque no puede convertir double a float. La forma correcta es asi:

ShapeDrawable dAsteroide=new ShapeDrawable(new PathShape(pathAsteroide,1.0f,1.0f));

Dejo la solución porque he visto que hay muchos errores similares, aunque las soluciones que encontre anteriormente no aplicaban en mi caso, esta solución puede aplicar para alguien.

Saludos y gracias

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:53.