У меня есть основное действие, в котором я назначаю вкладки, используя три фрагмента. У меня есть кнопка на ActionBar, которая перемещается в другой фрагмент, говоря «Информация о приложении». После того, как пользователь перейдет к этому фрагменту (Info), я отключу его, чтобы он не вызывался снова и снова. Затем на задней клавише основного действия я снова включу его. Все идет нормально. Но я не могу повторно включить его для одного сценария: скажите, если пользователь переходит к фрагменту информации и не отжимает, но если он перейдет на другую вкладку, информационная кнопка по-прежнему отключена, так как back-press не были вызваны. Я пробовал много вещей в onStart() и onResume() фрагментов, но я не могу ссылаться на menuItem в любом из них, поскольку получаю нулевой указатель.Включить кнопку ActionBar каждый раз, когда происходит переход по вкладкам.
Код ссылки: (MainActivity при вызове информации фрагмент из onOptionsSelected):
public boolean onOptionsItemSelected(MenuItem item) {
mMenuItem = item;
switch (item.getItemId()) {
case R.id.info:
Tab d = getActionBar().getSelectedTab();
System.out.println(""+d.getText().toString());
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
String a = d.getText().toString();
if(a.equalsIgnoreCase("Reminders")){
FragmentContact fragmentcontact = new FragmentContact();
fragmentTransaction.replace(R.id.realtabcontent, fragmentcontact);
mMenuItem.setEnabled(false);
//mMenuItem.setIcon(R.drawable.btn_age_01);
}
else if(a.equalsIgnoreCase("Notifications")){
FragmentContact fragmentcontact = new FragmentContact();
fragmentTransaction.replace(R.id.realtabcontent2, fragmentcontact);
mMenuItem.setEnabled(false);
}
else if(a.equalsIgnoreCase("Contacts")){
FragmentContact fragmentcontact = new FragmentContact();
fragmentTransaction.replace(R.id.realtabcontent3, fragmentcontact);
mMenuItem.setEnabled(false);
}
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
на кнопку Назад (Основной вид деятельности):
@Override
public void onBackPressed() {
mMenuItem.setEnabled(true);
super.onBackPressed();
}
Являются ли напоминания, уведомления и контакты фрагментами под кнопкой «Действие»? т. е. они являются частью кнопки «Информация». –
Информация - это всеохватывающий фрагмент, он доступен для навигации из любого из трех, эта навигация не открывает другого намерения, однако он просто перемещается с любой из трех вкладок фрагментов в один и тот же вид. То есть он отображается без висящей вкладки. – Skynet
Если да, почему бы не попытаться установить 'default: mMenuItem.setEnabled (true);' inside 'switchc-case'. –