Двойной onCreateView и onResume в PlaceholderFragment

247
12 мая 2017, 14:54

Приветствую.

Я использую стандартную комплектацию TabbedActivity в AndroidStudio, у которой в классе MainActivity реализованы сам класс MainActivity, фрагмент PlaceholderFragment и его Adapter, я прописал логи и при запуске программы в логах вызывается метод onCreate главного Activity и дважды onCreateView Fragment, я не могу понять, почему метод onCreateView вызывается дважды? У меня реализован MediaPlayer во Fragment, и если я пролистаю раз, то он не переходит в состояние stop с первого раза, хотя в методе onStop, и onDestroyView я устанавливаю MediaPlayer.stop. Нужно пролистать дважды, только тогда срабатывает метод onStop, почему так? Как мне отловить второе onCreateView? Я так полагаю один Fragment я вижу непосредственно, а другой живет в памяти? Если да, то как к нему получить доступ, и задать нужные мне параметры и в его методах onStop и onDestroyView?

Answer 1

Вам следует подробнее почитать про PagerAdapter и FragmentPagerAdapter.

логах вызывается метод onCreate главного Activity и дважды onCreateView Fragment

  • Это происходит для того, чтоб обеспечить плавный переход на следующую страницу! Ведь если вы плавно поведёте пальцем в сторону следующей страницы - вы уже видите готовый фрагмент.

Я так полагаю один Fragment я вижу непосредственно, а другой живет в памяти

  • Когда Вы переходите на второй фрагмент, в памяти уже живёт 3 фрагмента ;) тот что, слева и тот, что справа.

Для решения Вашей задачи - Вам скорее всего следует подписаться на событие OnTabSelectedListener, и через адаптер отдавать команды на остановку или запуск MediaPlayer.

READ ALSO
Будильник Android

Будильник Android

Делаю что-то вроде будильника, как можно указать сразу два будильника? Просто если использовать этот же код и изменять время, то будильник...

279
Как собрать jar?

Как собрать jar?

На сервере настроил крон и команду для запуска jarНужно собрать jar из исходников

201
Как обойти final в java?

Как обойти final в java?

Надо проверить массив на длинуИ если он пустой создать маркеры, а если нет - обновлять их местоположение

270