PDA

Ver la Versión Completa : [ CONSULTA ] Problema con Resources (drawables)


Duqe
30/01/11, 02:44:12
public int setImagenIdioma(String idioma) {
int valor = 0;
if(idioma == "es") {
valor = context.getResources().getInteger(R.drawable.es);
} else if(idioma == "en") {
valor = context.getResources().getInteger(R.drawable.en);
} else if(idioma == "de") {
valor = context.getResources().getInteger(R.drawable.de);
} else {
valor = this.context.getResources().getInteger(R.drawable. idesconocido);
}
return valor;
}

Buenas.

Pues con ese codigo recibo un error de Resourcesnotfoundexception. Es curioso, por que justo antes se ejecuta otra funcion, similar a esta, pero que en vez de recibir un string de 2 caracteres, recibe un string de 5 o mas. Tambien la diferencia es que las imagenes son mas grandes en la otra funcion.

A que puede venir el error? He probado de todo a la hora de comprobar los valores. Y ya solo me queda que pensar que al ejecutarse, busque ese resource en su carpeta correspondiente. Pero que si no encuentra uno adecuado para la densidad de pantalla, salta ese error.

Sobre esto ultimo comentar que en las 3 carpetas de drawable (hdpi, mdpi, ldpi) tengo las mismas imagenes. Mismo tamaño tambien. Por eso solo me queda pensar que quizas tenga que reducir las que tengo el ldpi, y ampliar las de hdpi.

Sobre esto ultimo, hay alguna tabla o algo de referencia a la hora de crear las imagenes que queremos meter en los apks? Quiero decir, por ejemplo, para una de 100 x 100 dpi, reducirla a xxx x xxx dpi para ldpi, o ampliarla x cantidad para meterla en hdpi.

A ver si alguien me echa un cable con esto. Gracias.

manus.reload
10/01/12, 04:13:12
Hola! Este error se produce porque estas intentado acceder a un Resource que quizás no exista. Te explico, lo que estas haciendo con:
valor = context.getResources().getInteger(R.drawable.es);
Es obtener el Resource de tipo integer con el id: R.drawable.es, por lo que no lo encontrará.
El tamaño de los iconos en las carpetas hdpi, mdpi, ldpi no le importa al compilador, son medidas relativas, puesto que una imagen puede ser mayor que otra.
Yo en Windows utilizaba Paint.NET, en Linux utilizo GIMP.

Puedes resolver el problema:
Opcion A: Devolver R.drawable.es, y poner ese valor directamente el imageview.
Opcion B: Devolver el Drawable con: getResources().getDrawable(id) y luego settearlo en el ImageView.