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

У меня есть BaseFragment, который расширяет все остальные фрагменты. А базовый фрагмент OnCreate() добавляет пользовательскую панель действий в приложение. Все дочерние фрагменты обновляют кнопки панели действий и заголовок. При обратном нажатии панель действий не обновляется.

открытый абстрактный класс BaseFragment extends Fragment{

     public TextView actionbarTextView;
     public Button actionbarSettings;

     public void updateActionbar(String title, boolean showSettings){
          actionbarTextView.setText(title);
          actionbarSettings.setvisibility(showSettings ? View.VISIBLE :View.GONE);
     }
}

public class ChildFragment1 extends BaseFragment{

        @override
        onResume(){
            updateActionbar("ChildFragment1",false);
        }
}
public class ChildFragment2 extends BaseFragment{

        @override
        onResume(){
            updateActionbar("ChildFragment2",true);
        }
}

Вот когда я получил от childFragment1 -> childFragment2. При обратном нажатии кнопки заголовка и панели действий не обновляются.

Как я могу реализовать это, чтобы оно всегда работало? Я заменяю фрагмент, как показано ниже..

        Fragment newFragment = new ExampleFragment();
        FragmentTransaction transaction = getFragmentManager().beginTransaction();

        // Replace whatever is in the fragment_container view with this fragment,
        // and add the transaction to the back stack
        transaction.replace(R.id.fragment_container, newFragment);
        transaction.addToBackStack(true);

        // Commit the transaction
        transaction.commit();

1 ответ

Решение

Вам нужно позвонить getActivity().invalidateOptionsMenu(); для обновления вашего варианта меню.

документы говорит: Declare that the options menu has changed, so should be recreated. The onCreateOptionsMenu(Menu) method will be called the next time it needs to be displayed

Другие вопросы по тегам