У меня есть активность с BottomNavigationBar с 4 фрагментами. Я открываю Fragment1 из то есть MapFragment из MainActivity. И после этого я открываю еще один фрагмент, т.е. фрагмент сообщения из MapFragment. Загружается успешно. Но когда я сейчас пытаюсь открыть любой другой фрагмент, будь то по активности или внутри фрагмента, в обоих случаях фрагмент загружается успешно, но не расширяет представление.
Вот мой фрагмент кода для транзакции фрагмента внутри действия:
private void loadFragment(Fragment fragment) {
// load fragment
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.frame_container, fragment, fragment.getClass().getSimpleName());
transaction.addToBackStack(fragment.getClass().getSimpleName());
transaction.commit();
fragmentManager.executePendingTransactions();
}
А это мой код для транзакции фрагмента во всех остальных фрагментах:
private void loadFragment(Fragment fragment) {
// load fragment
assert getActivity() != null;
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
fragmentManager.executePendingTransactions();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.frame_container, fragment, fragment.getClass().getSimpleName());
transaction.addToBackStack(fragment.getClass().getSimpleName());
transaction.commit();
fragmentManager.executePendingTransactions();
}
А это мой фрагмент кода для обработки уведомлений:
/*Open Messages Screen on PushNotification Click*/
try {
Bundle bundle = getActivity().getIntent().getExtras();
if (bundle != null) {
JSONObject jsonObject = new JSONObject(Objects.requireNonNull(bundle.get("data")).toString());
if (jsonObject.getString("notificationType").equals("Message")) {
UrbanCircleSingleton.setBottomBarItemSelected(R.id.bottom_bar_item_messages);
loadFragment(MessagesFragment.newInstance());
//Clear notification data from intent
getActivity().setIntent(null);
}
}
} catch (Exception e) {
e.printStackTrace();
}