Android: Guardar estado de botones de radio
Hola, estoy intentando crear una aplicación para Android y para desarrollarla necesito navegar por diferentes páginas y preguntas. Para esta tarea he definido un radiogroup con algunos radiobuttons. Lo que quiero obtener es cada pregunta contestada radiobutton y cuando el usuario va thorugh differentes páginas el valor puede ser recuperado. He intentado este código que consiste en que si hay un radiobutton seleccionado, allí no creó los nuevos radiobuttons (los radiobuttons comprobaron falsos). Sin embargo, con este código, siempre hay una respuesta seleccionada para que siempre haya el mismo botón de radio seleccionado. Apreciaré una cierta ayuda.
radBotA.setOnCheckedChangeListener(radioCheckChangeListener); radBotB.setOnCheckedChangeListener(radioCheckChangeListener); radBotC.setOnCheckedChangeListener(radioCheckChangeListener); radBotD.setOnCheckedChangeListener(radioCheckChangeListener); radBotA.setOnClickListener(radioClickListener); radBotB.setOnClickListener(radioClickListener); radBotC.setOnClickListener(radioClickListener); radBotD.setOnClickListener(radioClickListener); if (radBotA.isChecked()){ Answers[position]="A"; } else if(radBotB.isChecked()){ Answers[position]="B"; } else if(radBotB.isChecked()){ Answers[position]="C"; } else if(radBotC.isChecked()){ Answers[position]="D"; } else if(radBotD.isChecked()){ Answers[position]="D"; } else { radBotA.setChecked(false); radBotA.setChecked(false); radBotA.setChecked(false); radBotA.setChecked(false); } bPrevious.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { position = position -1; questions.Previous(); currentQuestion(); } }); bNext.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { position = position +1; questions.Next(); currentQuestion(); } }); private void currentQuestion() { if (position==0){ bPrevious.setVisibility(View.GONE); }else{ bPrevious.setVisibility(View.VISIBLE); } if (position==nPreguntas-1){ bNext.setVisibility(View.GONE); }else{ bNext.setVisibility(View.VISIBLE); } questions.currentQuestion(this, category); enunciado.setImageResource(Enunciado[position]); pregunta.setText(questions.getPregunta()); final RadioButton radBotA = new RadioButton(this); final RadioButton radBotB = new RadioButton(this); final RadioButton radBotC = new RadioButton(this); final RadioButton radBotD = new RadioButton(this); radBotA.setText("A. " + questions.getRespuestaA()); radBotB.setText("B. " + questions.getRespuestaB()); radBotC.setText("C. " + questions.getRespuestaC()); radBotD.setText("D. " + questions.getRespuestaD()); String nprueba = "Item " + questions.getId() + " de "+ nPreguntas; NombrePrueba.setText(nprueba); if (radBotA.isChecked()){ Answers[position]="A"; } else if(radBotB.isChecked()){ Answers[position]="B"; } else if(radBotB.isChecked()){ Answers[position]="C"; } else if(radBotC.isChecked()){ Answers[position]="D"; } else if(radBotD.isChecked()){ Answers[position]="D"; } else { radBotA.setChecked(false); radBotA.setChecked(false); radBotA.setChecked(false); radBotA.setChecked(false); } }
Gracias por su tiempo a todos
- Android guarda la matriz de objetos personalizados
- Guardar una ArrayList para archivo en android
- ¿Cómo guardar datos hasta que la aplicación se desinstale en android?
- La imagen, guardada en sdcard, no aparece en la aplicación Galería de Android
- Guardar archivo en el teléfono en lugar de tarjeta SD
Editar:
public void save(){ SharedPreferences settings = getSharedPreferences("Answers", 0); SharedPreferences.Editor e = settings.edit(); e.putBoolean("A0",radBotA.isChecked()); e.putBoolean("B0",radBotB.isChecked()); e.putBoolean("C0",radBotC.isChecked()); e.putBoolean("D0",radBotD.isChecked()); e.putBoolean("A1",radBotA.isChecked()); e.putBoolean("B1",radBotB.isChecked()); e.putBoolean("C1",radBotC.isChecked()); e.putBoolean("D1",radBotD.isChecked()); e.putBoolean("A2",radBotA.isChecked()); e.putBoolean("B2",radBotB.isChecked()); e.putBoolean("C2",radBotC.isChecked()); e.putBoolean("D2",radBotD.isChecked()); e.putBoolean("A3",radBotA.isChecked()); e.putBoolean("B3",radBotB.isChecked()); e.putBoolean("C3",radBotC.isChecked()); e.putBoolean("D3",radBotD.isChecked()); public void load(){ SharedPreferences settings = getSharedPreferences("Answers", 0); boolean answerA0 = settings.getBoolean("A0", false); boolean answerB0 = settings.getBoolean("B0", false); boolean answerC0 = settings.getBoolean("C0", false); boolean answerD0 = settings.getBoolean("D0", false); boolean answerA1 = settings.getBoolean("A1", false); boolean answerB1 = settings.getBoolean("B1", false); boolean answerC1 = settings.getBoolean("C1", false); boolean answerD1 = settings.getBoolean("D1", false); boolean answerA2 = settings.getBoolean("A2", false); boolean answerB2 = settings.getBoolean("B2", false); boolean answerC2 = settings.getBoolean("C2", false); boolean answerD2 = settings.getBoolean("D2", false); boolean answerA3 = settings.getBoolean("A3", false); boolean answerB3 = settings.getBoolean("B3", false); boolean answerC3 = settings.getBoolean("C3", false); boolean answerD3 = settings.getBoolean("D3", false);
Sin embargo, no sé cómo continuar. I v 'pensando en el siguiente código, pero me da error y donde posicion es el "Número de página":
public void Test(){ switch(posicion){ case(0): if(answerA0==true){ e.putBoolean("A0",radBotA.isChecked()); } } } }
- Android: guarda una imagen descargada de la URL en la tarjeta SD
- ¿Hay alguna manera de hacer compresión de imágenes y ahorrar más rápido en Android?
- Cómo compartir la imagen de imageview?
- La devolución de llamada saveInBackground no funciona
- Android: descarga de la imagen desde la Web, guardando en la memoria interna en una ubicación privada a la aplicación, mostrando para el elemento de lista
- Android guardar y cargar las diferencias PNG bitmaps
- Guardar imagen en la galería
- Problema con Eclipse durante la programación para Android - "Actualizar carpetas externas"
Si lo entiendo correctamente, desea recuperar algunos datos en otras actividades. En ese caso, la forma más fácil sería utilizar SharedPreferences
.
Después de que el usuario responda a la pregunta (el estado de comprobación de CheckBox
está siendo cambiado) debe almacenar su información en SharedPreferences
como esto:
SharedPreferences settings = getSharedPreferences("Answers", 0); // first argument is just a name of your SharedPreferences which you want to use. It's up to you how you will name it, but you have to use the same name later when you want to retrieve data. SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("questionA", radBotA.isChecked()); // first argument is a name of a data that you will later use to retrieve it and the second argument is a value that will be stored editor.putBoolean("questionB", radBotB.isChecked()); editor.putBoolean("questionC", radBotC.isChecked()); editor.putBoolean("questionD", radBotD.isChecked()); editor.commit(); // Commit the changes
Así que ahora usted tiene esa información almacenada en su almacenamiento interno. En otra actividad, puede recuperar esta información:
SharedPreferences settings = getSharedPreferences("Answers", 0); boolean answerA = settings.getBoolean("questionA", false); // The second argument is a default value, if value with name "questionA" will not be found boolean answerB = settings.getBoolean("questionB", false); boolean answerC = settings.getBoolean("questionC", false); boolean answerD = settings.getBoolean("questionD", false);
Estoy trabajando en la misma aplicación y la solución es que usted tiene que almacenar el estado del botón de radio de acuerdo a su pregunta Número y para cada pregunta hay clave diferente, como esto:
final RadioButton rdSelection=(RadioButton)findViewById(mradioOptGroup.getCheckedRadioButtonId()); int child_index=mradioOptGroup.indexOfChild(rdSelection); switch(mid) { case 1: sharedpreferences.putint("",child_index); break; case 2: sharedpreferences.putint("",child_index); break; }
Y hacer esto para todas sus preguntas en cada pregunta siguiente
Y en cada pregunta anterior usted tiene que almacenar el estado del botón de radio de mid+1
Donde mid
es su número de pregunta
Sólo he resuelto este problema, ahora soy capaz de guardar el estado actual del botón de radio en cada clic siguiente y en cada clic anterior vuelvo el estado de la radio, incluso en el si el usuario cambió el estado de ir a la pregunta anterior o cualquier De la cuestión.
- ¿Cómo interractar aplicaciones Android con un PI de frambuesa …?
- Android: equivalente a IOS UIActionSheet