Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 09/04/15, 23:00:58
Array

[xs_avatar]
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Tu operador: Otra
Error bitmap en palette

Hola, necesito de su ayuda si no es mucha molestia, tengo un array de drawables en donde guardo las imagenes pero el problema es que no me permite extraer el que se está mostrando actualmente para ponerlo en palette para extraer el vibrantColor es justo en este metodo donde falla y me salta error el logCat
[PHP]private void llenarLayout() {
BitmapPalette = BitmapFactory.decodeResource(view.getResources(), ABC_imagenes[posicionLetra]);
PaletteLetra = Palette.generate(BitmapPalette);
letraTitulo.setText(ABCLetras[posicionLetra]);
letraImagen.setImageResource(letraBackGround.getRe sourceId(posicionLetra, posicionLetra));
ContenedorDeLetra.setBackgroundColor(PaletteLetra. getVibrantColor(0));
MA.speak(descripcionLetras[posicionLetra]);
}[/PHP]

El error es este:
[PHP]04-09 16:58:53.793: W/ResourceType(7403): No package identifier when getting value for resource number 0x00000000
04-09 16:58:53.965: W/dalvikvm(7403): threadid=1: thread exiting with uncaught exception (group=0x40018578)
04-09 16:58:54.168: E/AndroidRuntime(7403): FATAL EXCEPTION: main
04-09 16:58:54.168: E/AndroidRuntime(7403): java.lang.IllegalArgumentException: bitmap can not be null
04-09 16:58:54.168: E/AndroidRuntime(7403): at android.support.v7.graphics.Palette.checkBitmapPar am(Palette.java:521)
04-09 16:58:54.168: E/AndroidRuntime(7403): at android.support.v7.graphics.Palette.generate(Palet te.java:128)
04-09 16:58:54.168: E/AndroidRuntime(7403): at android.support.v7.graphics.Palette.generate(Palet te.java:115)
04-09 16:58:54.168: E/AndroidRuntime(7403): at com.JimSoft.Edu.LearnWithEnuma.LetraFragment.llena rLayout(LetraFragment.java:96)
04-09 16:58:54.168: E/AndroidRuntime(7403): at com.JimSoft.Edu.LearnWithEnuma.LetraFragment.onCre ateView(LetraFragment.java:90)
04-09 16:58:54.168: E/AndroidRuntime(7403): at android.support.v4.app.Fragment.performCreateView( Fragment.java:1786)
04-09 16:58:54.168: E/AndroidRuntime(7403): at android.support.v4.app.FragmentManagerImpl.moveToS tate(FragmentManager.java:953)
04-09 16:58:54.168: E/AndroidRuntime(7403): at android.support.v4.app.FragmentManagerImpl.moveToS tate(FragmentManager.java:1136)
04-09 16:58:54.168: E/AndroidRuntime(7403): at android.support.v4.app.BackStackRecord.run(BackSta ckRecord.java:739)
04-09 16:58:54.168: E/AndroidRuntime(7403): at android.support.v4.app.FragmentManagerImpl.execPen dingActions(FragmentManager.java:1499)
04-09 16:58:54.168: E/AndroidRuntime(7403): at android.support.v4.app.FragmentManagerImpl$1.run(F ragmentManager.java:456)
04-09 16:58:54.168: E/AndroidRuntime(7403): at android.os.Handler.handleCallback(Handler.java:587 )
04-09 16:58:54.168: E/AndroidRuntime(7403): at android.os.Handler.dispatchMessage(Handler.java:92 )
04-09 16:58:54.168: E/AndroidRuntime(7403): at android.os.Looper.loop(Looper.java:130)
04-09 16:58:54.168: E/AndroidRuntime(7403): at android.app.ActivityThread.main(ActivityThread.jav a:3687)
04-09 16:58:54.168: E/AndroidRuntime(7403): at java.lang.reflect.Method.invokeNative(Native Method)
04-09 16:58:54.168: E/AndroidRuntime(7403): at java.lang.reflect.Method.invoke(Method.java:507)
04-09 16:58:54.168: E/AndroidRuntime(7403): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:867)
04-09 16:58:54.168: E/AndroidRuntime(7403): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:625)
04-09 16:58:54.168: E/AndroidRuntime(7403): at dalvik.system.NativeStart.main(Native Method)
[/PHP]
Gracias por su tiempo.
Responder Con Cita


  #2  
Viejo 09/04/15, 23:26:26
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Parece que la línea que te falla es esta:

PaletteLetra = Palette.generate(BitmapPalette);

Lo que significa que BitmapPalette es null, además si tienes en cuenta este Warning:

04-09 16:58:53.793: W/ResourceType(7403): No package identifier when getting value for resource number 0x00000000

Te está diciendo que has tratado de recuperar el recurso número 0 y no existe, por tanto todo indica que:

ABC_imagenes[posicionLetra]

es 0, revisa donde asignas esa variable antes de la ejecución de "llenarLayout"
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 10/04/15, 01:58:50
Array

[xs_avatar]
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Tu operador: Otra
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Parece que la línea que te falla es esta: PaletteLetra = Palette.generate(BitmapPalette); Lo que significa que BitmapPalette es null, además si tienes en cuenta este Warning: 04-09 16:58:53.793: W/ResourceType(7403): No package identifier when getting value for resource number 0x00000000 Te está diciendo que has tratado de recuperar el recurso número 0 y no existe, por tanto todo indica que: ABC_imagenes[posicionLetra] es 0, revisa donde asignas esa variable antes de la ejecución de "llenarLayout"
Hola, gracias por tu pronta respuesta, el array no está vacío por que de el extraigo y seteo (Si esta bien dicho) a el image view, el imageview se muestra de forma correcta pero cuando puse palette a mi fragment comenzó a fallar, este es el array:
este está en values-es/dimens.xml
[php]<resources>
<integer-array name="abc_imagenes">
<item>@drawable/letra_a</item>
<item>@drawable/letra_b</item>
<item>@drawable/letra_c</item>
<item>@drawable/letra_d</item>
<item>@drawable/letra_e</item>
<item>@drawable/letra_f</item>
<item>@drawable/letra_g</item>
<item>@drawable/letra_h</item>
<item>@drawable/letra_i</item>
<item>@drawable/letra_j</item>
<item>@drawable/letra_k</item>
<item>@drawable/letra_l</item>
<item>@drawable/letra_m</item>
<item>@drawable/letra_n</item>
<item>@drawable/letra_n2</item>
<item>@drawable/letra_o</item>
<item>@drawable/letra_p</item>
<item>@drawable/letra_q</item>
<item>@drawable/letra_r</item>
<item>@drawable/letra_s</item>
<item>@drawable/letra_t</item>
<item>@drawable/letra_u</item>
<item>@drawable/letra_v</item>
<item>@drawable/letra_w</item>
<item>@drawable/letra_x</item>
<item>@drawable/letra_y</item>
<item>@drawable/letra_z</item>
</integer-array>

</resources>[/php]y el valor es aleatorio por que se manda desde un fragment anterior dependiendo de la letra que se haya pulsado, este valor es enviado como bundle, gracias de nuevo.
Edito: tambien tengo este array declarado en res/values/dimens.xml para el idioma inglés

Última edición por LEAJIM_454 Día 10/04/15 a las 02:00:45. Razón: Falta de informacion
Responder Con Cita
  #4  
Viejo 10/04/15, 09:53:26
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Haz una prueba, pon directamente R.drawable.letra_a en vez de ABC_imagenes [posicion]

Si te funciona está claro que hay algo mal en ese array.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
Gracias de parte de:
  #5  
Viejo 10/04/15, 14:26:01
Array

[xs_avatar]
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Tu operador: Otra
 Cita: Originalmente Escrito por mocelet Ver Mensaje
Haz una prueba, pon directamente R.drawable.letra_a en vez de ABC_imagenes [posicion] Si te funciona está claro que hay algo mal en ese array.
Hice lo que me dijiste, y todo anda bien inlusive cambian los colores de las vistas, pero no funciona con el array, si gustas te dejo aqui el codigo del fragment para que puedas verlo, lo dejo como estaba en un principio

[PHP]package com.JimSoft.Edu.LearnWithEnuma;

import java.util.Locale;

import android.app.Activity;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.graphics.Palette;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class LetraFragment extends Fragment implements OnClickListener {
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";

private String mParam1;
private String mParam2;

private View view;
private TextView letraTitulo,letraDescripcion;
private ImageView letraImagen;
private ImageButton letraAnterior,letraSiguiente;
private Bitmap BitmapPalette;
private LinearLayout ContenedorDeLetra;

private OnFragmentInteractionListener mListener;

private int[] ABC_imagenes;
private String[] ABCLetras, descripcionLetras;
private int posicionLetra;
private TypedArray letraBackGround;
private MainActivity MA;
private Palette PaletteLetra;


public static LetraFragment newInstance(String param1, String param2) {
LetraFragment fragment = new LetraFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}

public LetraFragment() {
}

@override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}

@override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_letra, container, false);
String letraPosition = getArguments().getString("getLetra");
letraTitulo = (TextView)view.findViewById(R.id.LetraTitulo);
letraImagen = (ImageView)view.findViewById(R.id.LetraImagen);
letraAnterior = (ImageButton)view.findViewById(R.id.LetraAtras);
letraSiguiente = (ImageButton)view.findViewById(R.id.LetraSiguiente );
letraDescripcion = (TextView)view.findViewById(R.id.LetraDescripcion) ;
ABCLetras = getResources().getStringArray(R.array.titulos_abc) ;
descripcionLetras = getResources().getStringArray(R.array.Conceptos_AB C);
posicionLetra = Integer.parseInt(letraPosition);
ABC_imagenes = getResources().getIntArray(R.array.abc_imagenes);
letraBackGround = getResources().obtainTypedArray(R.array.abc_imagen es);
letraAnterior.setOnClickListener(this);
letraSiguiente.setOnClickListener(this);

MA = (MainActivity)getActivity();

ContenedorDeLetra = (LinearLayout)view.findViewById(R.id.ContenedorLet ra);
llenarLayout();
return view;
}

private void llenarLayout() {
BitmapPalette = BitmapFactory.decodeResource(view.getResources(), ABC_imagenes[posicionLetra]);

PaletteLetra = Palette.generate(BitmapPalette);
letraTitulo.setText(ABCLetras[posicionLetra]);
letraImagen.setImageResource(letraBackGround.getRe sourceId(posicionLetra, posicionLetra));
ContenedorDeLetra.setBackgroundColor(PaletteLetra. getVibrantColor(0));
MA.speak(descripcionLetras[posicionLetra]);
}

public void onButtonPressed(Uri uri) {
if (mListener != null) {
mListener.onFragmentInteraction(uri);
}
}

@override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnFragmentInteractionListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnFragmentInteractionListener");
}
}

@override
public void onDetach() {
super.onDetach();
mListener = null;
}

private void LetraAtras() {
posicionLetra=posicionLetra-1;
if (posicionLetra==0) {
view.findViewById(R.id.LetraAtras).setClickable(fa lse);
}else {
view.findViewById(R.id.LetraAtras).setClickable(tr ue);
}
view.findViewById(R.id.LetraSiguiente).setClickabl e(true);
llenarLayout();
}

private void LetraAdelante() {
if (posicionLetra==getResources().getStringArray(R.ar ray.Abecedario).length-1) {
view.findViewById(R.id.LetraSiguiente).setClickabl e(false);
}else {
view.findViewById(R.id.LetraSiguiente).setClickabl e(true);
posicionLetra=posicionLetra+1;
Log.d("I", String.valueOf(getResources().getStringArray(R.arr ay.Abecedario).length));
llenarLayout();
}
}

@override
public void onClick(View v) {
switch (v.getId()) {
case R.id.LetraAtras:
if (MA.tts!=null) {
MA.tts.stop();
}
LetraAtras();
break;
case R.id.LetraSiguiente:
if (MA.tts!=null) {
MA.tts.stop();
}
LetraAdelante();
break;
default:
break;
}
}

}
[/PHP]
Gracias.
Responder Con Cita
  #6  
Viejo 10/04/15, 15:18:41
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

El problema es cómo defines el array en el XML, según la documentación de Android los arrays de drawables se hacen así (ver último ejemplo) http://developer.android.com/guide/t...tml#TypedArray

Quizá el usar un integer-array en vez de un array es el problema (explicaría que todo valiera 0 si en los XML no sabe convertir un drawable a un int)

A mí particularmente no me gustan demasiado los XML... es mucho más fácil y corto un int[] imagenes = new int[]{R.drawable.letraA, R.drawable.letraB, ...};
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!

Última edición por mocelet Día 10/04/15 a las 15:55:09.
Responder Con Cita
Gracias de parte de:
  #7  
Viejo 11/04/15, 03:10:13
Array

[xs_avatar]
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Tu operador: Otra
 Cita: Originalmente Escrito por mocelet Ver Mensaje
A mí particularmente no me gustan demasiado los XML... es mucho más fácil y corto un int[] imagenes = new int[]{R.drawable.letraA, R.drawable.letraB, ...};
Tambien lo habia pensado pero el problema que tuve es que no en todo idioma este array tendria la misma longitud y tampoco el mismo orden, ahora si funciona de maravilla.
Gracias Mocelet y kriogeN, siempre me sacan de apuros.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 11:27:48 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /