2014-12-27 2 views
0

У меня есть меню действий, и на одном фрагменте я хочу заменить элемент внутри этого меню. Элемент при нажатии запускает действие. Работает элемент меню фрагмента, но он также вызывает намерение пункта меню активности. Мне нужно также удалить выбранный дубликат основного пункта меню активности.Меню меню вызова фрагментов

Главное меню Активность:

public boolean onOptionsItemSelected(MenuItem item) { 


     else if(itemId == R.id.action_settings) 

      startActivity (new Intent(getApplicationContext(), 
        PreferencesActivity.class)); 

     return super.onOptionsItemSelected(item); 
    } 

меню Фрагмент:

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.action_settings: 
       startActivity(new Intent(getActivity(), 
         PreferencesFragment.class)); 
       return false; 

      default: 
       break; 
     } 

     return false; 
    } 

ответ

0

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

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if (!isMyFragmentPresent()) { 
     switch (item.getItemId()) { 
      case R.id.action_settings: 
       startActivity(new Intent(getApplicationContext(), 
        PreferencesActivity.class)); 
       return true; 
      default: 
       break; 
     } 
    } 

    return false; 
} 

public void setMyFragmentIsPresent(boolean isMyFragmentPresent) { 
    this.isMyFragmentPresent = isMyFragmentPresent; 
} 

ОБНОВЛЕНИЕ: Я понимаю, что это не сработает, если у вас есть больше предметов, чем тот, который вы хотите изменить. Возможно, вам будет лучше иметь Фрагмент по умолчанию, который загружается в действие, которое ничего не делает, кроме загрузки кнопки настроек R.id.action_settings и того, что она делает. Затем этот фрагмент будет заменен вашим новым фрагментом.

Смежные вопросы