У меня очень специфическая проблема.Я понимаю, что хотя на переднем плане переменные-члены Activity остаются нетронутыми (не нужно сохранять для сохранения).Теперь у меня есть PagerAdapter
, который представляет собой тест с вопросом и тремя ответами.Я создал различные объекты для представления вопроса и ответов.
A Question
всегда имеет список точно из 3 Answer
.Вот как я это делаю: (примечание: некоторый код был оставлен для удобства чтения)
public class QuizPagerAdapter
{
List<Question> questionList;
Context context;
public QuizPagerAdapter (List<Question> list, Context ctx) {
questionList = list;
context = ctx;
}
@Override
public Object instantiateItem (View pager, int position) {
// Create various views (ScrollView, LinearLayout, etc)
final Question q = questionList.get(position);
RadioGroup group = new RadioGroup(context);
for (int i = 0; i < 3; i++) {
Answer a = q.getAnswer(i);
RadioButton rb = new RadioButton(context);
rb.setId(i);
rb.setText(a.getText());
rb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RadioButton btn = (RadioButton) v;
q.unselectAll(); // unselects all Answer's
q.getAnswer(btn.getId()).setSelected(true);
}
});
if (a.isSelected()) rb.setChecked(true);
}
return view;
}
}
Когда я использую это в своей Деятельности, я получаю хороший список Вопросов с тремя Ответами.Теперь, когда я выбираю один ответ, RadioButton проверяется.Хорошо, теперь я перехожу к следующему Вопросу и проверяю его, затем возвращаюсь к предыдущему Вопросу, и там ответ, который я проверил на первом месте, теперь не проверено.
СейчасЭто не всегда случается, иногда это случается, но этого достаточно, чтобы вызвать проблемы.Активность никогда не помещается в фоновый режим.
Я понимаю, что Android уничтожит Представления в PagerAdapter для сохранения памяти, уничтожив, таким образом, RadioButton, поэтому у меня есть этот фрагмент:
if (a.isSelected()) rb.setChecked(true);
Но это все еще происходит.Я пытался записать все, отладки, но я не могу найти источник проблемы.Может быть, кто-то здесь сталкивался с подобной проблемой.
Любая помощь приветствуется, Спасибо заранее!