У меня есть класс SearchFragment
, который расширяет класс с именем BaseFragment
, в котором onResume
и onStop
переопределяются, как показано ниже:
@Override
public void onResume() {
checkEventBusRegistration();
super.onResume();
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
public void checkEventBusRegistration()
{
if(!EventBus.getDefault().isRegistered(this))
{
EventBus.getDefault().register(this);
}
}
SearchFragment
- фрагмент, показывающий список результатов поиска. При нажатии на каждый элемент, деталь продукта отображается в другом фрагменте по телефону ниже:
getFragmentManager().beginTransaction().replace(R.id.container, new ProductDetailFragment()).addToBackStack(null).commit();
Кроме того, некоторые другие события в моем фрагменте не работают должным образом. Мой фрагмент имеет listView, который не отвечает на notifyDataSetChanged()
.
После возврата из ProductDetailFragment
абонент Eventbus не запускается, и некоторые события, такие как notifyDataSetChanged
, принадлежащие адаптеру моего списка, не отвечают и отражают изменения в пользовательском интерфейсе.
Отладка строк кода после возврата из ProductDetailFragment
, когда управление достигает SearchFragment.onResume
Eventbus все еще регистрируется и не требует регистрации снова, но сгенерированные события не вызывают подписчиков.
Если это поможет, вот события жизненного цикла, запущенные моим фрагментом:
События жизненного цикла при создании фрагмента:
onAttach
onCreate
onCreateView
onViewCreated
onViewCreated
onStart
onResume
onCreateOptionsMenu
onPrepareOptionsMenu
События жизненного цикла при выходе из этого фрагмента путем его замены:
onPause
onStop
onDestroyView
onDestroyOptionsMenu
События жизненного цикла при возврате к этому фрагменту:
onCreateView
onViewCreated
onViewCreated
onStart
onResume
onCreateOptionsMenu
onPrepareOptionsMenu