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

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()); } } } } 

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 guardar 2 cadenas en una aplicación para Android?
  • Android webView saveState
  • Almacenamiento de archivos en el almacenamiento externo en Nexus 7 y recuperación desde un PC
  • Guardar datos entre actividades utilizando clases externas
  • Navegación incorrecta al guardar contactos en Android
  • Android cómo guardar un objeto en el archivo?
  • Crear un nuevo álbum en la galería y guardar las imágenes en ella
  • Guardar y volver a cargar ListView utilizando las preferencias compartidas
  • ¿Cómo usar una clase de contrato en android?
  • ¿Existe una mejor manera de guardar archivos de streaming con MediaPlayer?
  • Cómo guardar una imagen png en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.