Configuración de la selección de la ruleta basada en la selección de la ruleta anterior

Estoy seguro de que esto es simple y solo estoy pasando por alto o haciendo algo estúpido, pero estoy guardando una cantidad de entradas en una base de datos, una de las cuales es la opción seleccionada en un control giratorio y la almaceno como texto usando:

idCategory = (add_category_spinner.getSelectedItemPosition() + " Position");

Ahora, en otra actividad, estoy tratando de tener otra rueda girando exactamente con la misma selección. Estoy haciendo esto usando:

private String CategoryPosition

onCreate(...etc)

update_category_spinner = (Spinner) findViewById(R.id.update_category_spinner);
    ArrayAdapter<CharSequence> category_adapter = ArrayAdapter.createFromResource(
            this, R.array.category_array, android.R.layout.simple_spinner_item);

    category_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    update_category_spinner.setAdapter(category_adapter);

bundleduCategPos = takeBundledData.getString("clickeduCategPos");

CategoryPosition = String.valueOf(bundleduCategPos.charAt(0));
update_category_spinner.setSelection(Integer.parseInt(CategoryPosition)); 

Ahora, cuando intento abrir esa actividad en particular, aparece el siguiente error de logcat:

java.lang.NumberFormatException: Invalid int: "N"

Dependiendo de la selección de la ruleta guardada en mi base de datos, esa letra 'int no válida' puede cambiar. Esencialmente, toda la base de datos se guarda como conjuntos de cadenas, de ahí el texto adicional

".getSelectedItemPosition() + " Position");"

Lo introduzco, lo convierto en char, busco el primer carácter de índice cero que debería ser el ID de posición de la selección de la ruleta, lo convierto de nuevo en un int y finalmente uso ese int para establecer la selección en la nueva ruleta, que es leyendo de la misma matriz.

Agradecería alguna ayuda simplificada, por favor.

preguntado el 27 de julio de 12 a las 20:07

Comience agregando el registro de depuración y emita esto: takeBundledData.getString("clickeduCategPos"). Probablemente no sea lo que crees que es. -

Lo siento, tal vez podrías ayudarme con esto. Estoy usando bundleduCategPos = takeBundledData.getString("clickeduCategPos"); Log.d(TAG, bundleduCategPos); pero no aparece nada en el registro. ¿Lo estoy haciendo bien? Supongo que debería poder ver la salida en logcat. -

he bloqueado mi setSelection() y usé vistas de texto y brindis para confirmar las salidas. la salida de takeBundledData.getString("clickeduCategPos") es "4 posiciones", lo cual es correcto. la salida de String.valueOf(bundleduCategPos.charAt(0)); es 4, lo cual es correcto. Al intentar dar salida Integer.parseInt(CategoryPosition), falla, por lo que obviamente tiene algo que ver con la conversión. ¿Conoces otra forma de convertir cadenas a int? -

1 Respuestas

Ok, lo resolví ... encontré 2 problemas diferentes que contribuyeron. Problema 1: la selección no se realizó cuando ingresé la cadena sin convertirla primero a int. Me di cuenta de que se estaba haciendo la selección, pero no la estaba viendo como solía

update_category_spinner.setSelection(Integer.parseInt(CategoryPosition));

en lugar de

update_category_spinner.setSelection(Integer.parseInt(CategoryPosition), true);

En el siguiente problema, la excepción NumberFormatException estaba ocurriendo porque tenía 3 ruletas y estaba guardando 3 conjuntos de

getSelectedItemId();

a mi base de datos, y luego devolverles la llamada. Accidentalmente estaba llamando a uno de los Id de la columna equivocada, por lo que el

CategoryPosition = String.valueOf(bundleduCategPos.charAt(0));

devolvía el primer carácter de la cadena seleccionada de la matriz String, que en el ejemplo anterior era "N".

Respondido 28 Jul 12, 04:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.