2015-11-21 3 views
0

Я использую viewpager, в котором есть фрагменты X, содержащие вопрос. Каждый фрагмент простирается от одного и того же класса фрагментов, чтобы я мог вызывать метод для каждого фрагмента в цикле. Вот что я имею в виду:Прогулка по фрагментам-состояниям равна

 private int correctAnswers(){ 
     int NumberCorrect = 0; 
     var activity = Activity as QuizActivity; 
     var adapter = activity.getViewPagerAdapter(); 
     List<questionFrag> fragList = new List<questionFrag>(); 

     for (int i = 0; i < activity.getViewPagerAdapter().Count - 1; i++) { 
      var questionfrag = adapter.GetItem (i) as questionFrag; 
      if (questionfrag.isCorrect()) { 
       ++NumberCorrect; 
      } 
     } 
     return NumberCorrect; 
    } 

Линия «questionfrag.isCorrect()» позволяет мне перебрать фрагменты и получить ли правильный ответ, полученный от каждого фрагмента. Функция correctAnswers вызывается на последнем фрагменте viewpager. Однако, когда я вызываю метод, все переменные равны нулю в фрагментах. Я думал, что состояния фрагментов были сохранены по своей природе, установив «viewPager.OffscreenPageLimit», чтобы включить все фрагменты, но это не так.

Кто-нибудь знает решение?

+0

Как вы инициализируете эти переменные фрагмента? – dhke

+0

@dhke Обновлено публично в начале класса, инициализировано в OnCreateView() –

+0

@ shn-android-dev: Хорошо, тогда это, вероятно, не «обычная» проблема Android, использующая конструкторы по умолчанию для фрагмента (повторно) создайте их после изменения конфигурации, которое укусит всех, полагающихся на 'newInstance()' и тому подобное. – dhke

ответ

0

Я работал над проблемой, сохраняя мои переменные в SharedPrefereces. В будущем я могу сохранить их с помощью SQLite. Несмотря на это, вероятно, это не самая лучшая идея выделить память для сохранения 100 состояний фрагмента.

+0

Все в порядке. Вы можете это сделать. Чтобы получить то, что вы ожидаете, вы должны использовать только FragmentPagerAdapter, а не адаптер состояния пейджера. И измените ограничение на показ страницы. – cgr