С двумя фрагментами на одном экране (действие), как один фрагмент может обновить другой с помощью EventBus - PullRequest
1 голос
/ 30 марта 2019

Хорошо, я новичок в разработке для Android.

Я делаю приложение для записи.На том же экране, что и кнопка записи (для записи), у меня также есть Fragment, чтобы показать, сколько у меня записей.Я могу нажать кнопку записи, чтобы сделать запись, но счетчик записей не обновляется, пока не обновится состояние активности.Я хочу, чтобы количество записей обновлялось в реальном времени.Фрагмент будет виден и в другом упражнении, поэтому логика не может быть в основной записи деятельности.

Я только что включил EventBus в свой проект.Я установил, где событие является успешной записью, а подписчик пока что фрагмент.

Значение фрагмента правильно получает сообщение о событии, но фрагмент не будет обновляться до тех пор, пока не будет «обновлено» или, скорее, не пройдет жизненный цикл от onDestroyView() до onCreateView().

Помогите, пожалуйста, я хочу иметь возможность обновлять фрагмент в режиме реального времени без необходимости использования встроенных функций жизненного цикла.

СПАСИБО!

РЕДАКТИРОВАТЬ:

Я нашел решение, просто удалив фрагмент, а затем снова добавив его.


                supportFragmentManager
                    .beginTransaction()
                    .remove(statsFragmentTwo)
                    .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE)
                    .commit()


                supportFragmentManager
                    .beginTransaction()
                    .add(R.id.main_stats_container_two, statsFragmentTwo)
                    .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
                    .commit()

Но все же,это выглядит не очень эффективно!Есть ли более дешевый способ?

1 Ответ

0 голосов
/ 30 марта 2019

Значение фрагмента правильно получает сообщение о событии, но фрагмент не будет обновляться до тех пор, пока не будет «обновлено» или, скорее, не пройдет жизненный цикл от onDestroyView () до onCreateView ().

Я не понимаю идею - "Fragment не обновится".Если вы смогли успешно прослушать событие, вы можете немедленно обновить элементы пользовательского интерфейса, где вы ловите событие в своем фрагменте.Я просто излагаю псевдокод.

if(eventListened) 
    updateUIElementsHere();

Вам не нужно ждать вызова функций жизненного цикла.В вашей функции updateUIElementsHere вы можете подумать о том, чтобы иметь подобный код, который есть в вашей функции onCreateView.

Надеюсь, это поможет!

...