Ver la Versión Completa : ¿Porqué este código falla vil mente?
bicho_visacoso
24/10/11, 15:47:13
Buenas,
Estoy intentando dibujar en pantalla una serie de pixels que tengo en un array int (es para leer una foto en RAW y tras procesarla presentarla como dicho array). El tema es que al llegar al punto en el que hago el drawBitmap se produce un FC y no entiendo el motivo. ¿Alguien me puede ayudar?
override
protected void onDraw(Canvas canvas) {
int []imagen=new int[160000];
for(int i=0;i<imagen.length;i++){
imagen[i]=Color.argb(128, 128, 128, 128);
}
Bitmap myBitmap=null;
myBitmap.createBitmap(imagen, 400, 400, Bitmap.Config.ARGB_8888);
canvas.drawBitmap(myBitmap, 2040, 100, null);
}
Muchas gracias y un saludo.
David
hecsagis
24/10/11, 17:05:02
Es importante que pegues también el error que te da el FC, ahí viene donde está el problema
bicho_visacoso
24/10/11, 22:51:55
Hola,
El mensaje que me aparece al ejecutarlo en el tablet es "La aplicación se ha interrumpido inesperadamente. Inténtalo de nuevo". (Forzar cierre). No sé si con el mensaje del FC te refieres a otra cosa... lo estoy intentando compilar en eclipse (por si es alguna opción del entorno).
La linea que falla concretamente es canvas.drawBitmap(myBitmap, 2040, 100, null), si la comento el programa no falla, en cuanto la pongo para que se ejecute revienta. :(
Es desesperante... :loco:
hecsagis
24/10/11, 23:38:16
Cuando te da el FC, en el eclipse puedes ver en el logcat que es lo que ha causado el error.
Ahí te dirá porque esa línea ha hecho que el programa pete
bicho_visacoso
25/10/11, 00:23:57
10-25 00:20:05.080: W/dalvikvm(12336): threadid=1: thread exiting with uncaught exception (group=0x401ab760)
10-25 00:20:05.090: E/AndroidRuntime(12336): FATAL EXCEPTION: main
10-25 00:20:05.090: E/AndroidRuntime(12336): java.lang.NullPointerException
10-25 00:20:05.090: E/AndroidRuntime(12336): at android.graphics.Canvas.throwIfRecycled(Canvas.jav a:1011)
10-25 00:20:05.090: E/AndroidRuntime(12336): at android.graphics.Canvas.drawBitmap(Canvas.java:105 2)
10-25 00:20:05.090: E/AndroidRuntime(12336): at com.darkroom.DarkroomActivity$myView.onDraw(Darkro omActivity.java:39)
10-25 00:20:05.090: E/AndroidRuntime(12336): at android.view.View.draw(View.java:9286)
10-25 00:20:05.090: E/AndroidRuntime(12336): at android.view.ViewGroup.drawChild(ViewGroup.java:25 84)
10-25 00:20:05.090: E/AndroidRuntime(12336): at android.view.ViewGroup.dispatchDraw(ViewGroup.java :2189)
10-25 00:20:05.090: E/AndroidRuntime(12336): at android.view.ViewGroup.drawChild(ViewGroup.java:25 82)
10-25 00:20:05.090: E/AndroidRuntime(12336): at android.view.ViewGroup.dispatchDraw(ViewGroup.java :2189)
10-25 00:20:05.090: E/AndroidRuntime(12336): at android.view.ViewGroup.drawChild(ViewGroup.java:25 82)
10-25 00:20:05.090: E/AndroidRuntime(12336): at android.view.ViewGroup.dispatchDraw(ViewGroup.java :2189)
10-25 00:20:05.090: E/AndroidRuntime(12336): at android.view.View.draw(View.java:9289)
10-25 00:20:05.090: E/AndroidRuntime(12336): at android.widget.FrameLayout.draw(FrameLayout.java:4 19)
10-25 00:20:05.090: E/AndroidRuntime(12336): at com.android.internal.policy.impl.PhoneWindow$Decor View.draw(PhoneWindow.java:1923)
10-25 00:20:05.090: E/AndroidRuntime(12336): at android.view.ViewRoot.draw(ViewRoot.java:1701)
10-25 00:20:05.090: E/AndroidRuntime(12336): at android.view.ViewRoot.performTraversals(ViewRoot.j ava:1416)
10-25 00:20:05.090: E/AndroidRuntime(12336): at android.view.ViewRoot.handleMessage(ViewRoot.java: 2046)
10-25 00:20:05.090: E/AndroidRuntime(12336): at android.os.Handler.dispatchMessage(Handler.java:99 )
10-25 00:20:05.090: E/AndroidRuntime(12336): at android.os.Looper.loop(Looper.java:132)
10-25 00:20:05.090: E/AndroidRuntime(12336): at android.app.ActivityThread.main(ActivityThread.jav a:4123)
10-25 00:20:05.090: E/AndroidRuntime(12336): at java.lang.reflect.Method.invokeNative(Native Method)
10-25 00:20:05.090: E/AndroidRuntime(12336): at java.lang.reflect.Method.invoke(Method.java:491)
10-25 00:20:05.090: E/AndroidRuntime(12336): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:841)
10-25 00:20:05.090: E/AndroidRuntime(12336): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:599)
10-25 00:20:05.090: E/AndroidRuntime(12336): at dalvik.system.NativeStart.main(Native Method)
10-25 00:20:05.110: D/dalvikvm(12336): GC_CONCURRENT freed 54K, 4% free 7582K/7879K, paused 2ms+2ms
Eso es lo que aparece. Sigo sin saber porqué revienta. :(
hecsagis
26/10/11, 12:47:54
Por lo que veo alguno de los parámetros que le pasas a esa función es "null" cuando no lo debería ser:
java.lang.NullPointerException
Mira a ver cual de ellos lo está causando:
canvas.drawBitmap(myBitmap, 2040, 100, null);
FordPrefect
26/10/11, 15:53:51
Hola,
Mira a ver cual de ellos lo está causando:
Yo diría que el problema es de concepto:
Bitmap myBitmap=null;
myBitmap.createBitmap(imagen, 400, 400, Bitmap.Config.ARGB_8888);
canvas.drawBitmap(myBitmap, 2040, 100, null);
El problema es que myBitmap es null porque no lees el resultado de myBitMap()
Prueba así:
Bitmap myBitmap= Bitmap.createBitmap(imagen, 400, 400, Bitmap.Config.ARGB_8888);
canvas.drawBitmap(myBitmap, 2040, 100, null);
bicho_visacoso
26/10/11, 16:39:19
Efectivamente, muchisimas gracias.
Esto ha funcionado
Bitmap myBitmap= Bitmap.createBitmap(imagen, 400, 400, Bitmap.Config.ARGB_8888);
canvas.drawBitmap(myBitmap, 2040, 100, null);
:sisi1:
Un saludo.
David.
vBulletin® v3.8.1, Copyright ©2000-2026, Jelsoft Enterprises Ltd.