Я работаю над приложением, которое использует NavigationDrawer. Различные фрагменты помещаются в представление содержимого MainActivity
всякий раз, когда выбирается пункт меню в ящике. Чтобы сообщить MainActivity
, что Fragment
успешно присоединен, выполняется следующий обратный вызов:
public class CustomFragment extends Fragment {
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
((MainActivity) activity).onSectionAttached();
}
}
Поскольку я начал использовать Otto с Dagger в проекте Мне любопытно, как я могу заменить обратный вызов событием .post()
, например:
mBus.post(new CustomFragmentAttachedEvent);
Проблема в том, что mBus
это null
в onAttach()
. Он инициализируется в onCreate()
.
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((MyApp) getActivity().getApplication()).getObjectGraph().inject(this);
}
Вот пример такого класса Fragment.
Рекомендации:
Вы можете легко попробовать этот пример самостоятельно: создайте новый проект из шаблона NavigationDrawer
, доступного в Android Studio, добавьте Dagger и Otto и попробуйте замените упомянутый обратный вызов.
Рабочее решение:
- Вот фрагмент примера в окончательной рабочей версии.