Problema: Objeto como parámetro.

Iniciado por ignorantev1.1, 27 Julio 2014, 17:57 PM

0 Miembros y 1 Visitante están viendo este tema.

ignorantev1.1

Hola, qué tal:

Tengo un par de funciones, de igual nombre, diferenciadas en que una recibe una arreglo de objetos y la otra solamente uno. Dentro de las funciones los objetos son "inicializados":

Código (java) [Seleccionar]

// Esta función funciona perfectamente.
void decodeRes(Bitmap[] bmp, int w, int h, String code){
Bitmap tmpLoad;

for(int i = 0; i < bmp.length; i++){
tmpLoad = BitmapFactory.decodeResource(getResources(), getResources().getIdentifier(code + i, "raw", context.getPackageName()));
bmp[i] = Bitmap.createScaledBitmap(tmpLoad, w, h, true);
        }
}

// He aquí el problema:
void decodeRes(Bitmap bmp, int w, int h, String code){
Bitmap tmpLoad;
tmpLoad = BitmapFactory.decodeResource(getResources(), getResources().getIdentifier(code, "raw", context.getPackageName()));
bmp = Bitmap.createScaledBitmap(tmpLoad, w, h, true);
        System.out.println(bmp.getWidth()); //<----- Todo correcto, imprime el ancho del bitmap.
}

// {...}, código, código...

Bitmap unPatito;
decodeRes(unPatito, 24, 24, "patito0");
System.out.println(unPatito.getWidth()); //<------ Null pointer exception!


El problema está en la segunda función, puesto que el objeto que se pasa para ser "inicializado", sigue saliendo nulo.

Ya le he dado varias vueltas al código y no encuentro el error, incluso probé con:

Código (java) [Seleccionar]

void decodeRes(Bitmap bmp, int w, int h, String code){
Bitmap tmpLoad;
tmpLoad = BitmapFactory.decodeResource(getResources(), getResources().getIdentifier(code, "raw", context.getPackageName()));
unPatito = Bitmap.createScaledBitmap(tmpLoad, w, h, true); //<----- Escribiendo la variable directamente sí funciona.
}


Gracias. espero me haya explicado, y también su ayuda.

¡Saludos!

LaThortilla (Effort)

MM ya provastes con inicializar la variable?
Código (java) [Seleccionar]
Bitmap unPatito;

Nasty35

En teoría debería ir... probaría con algo así:
Código (java) [Seleccionar]
Bitmap decodeRes(int w, int h, String code){
   Bitmap tmpLoad;
   tmpLoad = BitmapFactory.decodeResource(getResources(), getResources().getIdentifier(code, "raw", context.getPackageName()));
   return Bitmap.createScaledBitmap(tmpLoad, w, h, true);
}

Bitmap unPatito = decodeRes( 24, 24, "patito0");
System.out.println(unPatito.getWidth());