0

Я пытаюсь отключить MENUITEM в моем navigationdrawer от моего фрагмента, но он просто не будет работать ...Android - onCreateOptionsMenu - Невозможно отключить MenuItem из фрагмента

фрагмент кода:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.waiting_for_terminal, container, false); 

    setHasOptionsMenu(true); 
    return rootView; 
} 

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     inflater.inflate(R.menu.activity_main_drawer, menu); 

     menu.findItem(R.id.nav_amount).setEnabled(false); 
     menu.findItem(R.id.nav_return).setEnabled(false); 
     menu.findItem(R.id.nav_about).setEnabled(false); 
     menu.findItem(R.id.nav_settings).setEnabled(false); 

     super.onCreateOptionsMenu(menu, inflater); 
    } 

Я могу вызвать getTitle() для MenuItems, и он вернет правильное значение. Но по какой-то причине setEnabled(), SETTITLE(), SetVisible() и т.д. не работает, то значение остается неизменным ...

ответ

2
Try This: 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    oldDescription= ActivityConstantUtils.sBlogDescriprtion; 
    setHasOptionsMenu(true); 
} 

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.menu_act_add_section, menu); 
    MenuItem item = menu.findItem(R.id.action_preview); 
    item.setIcon(null); 
    item.setTitle(""); 
    super.onCreateOptionsMenu(menu, inflater); 
} 
+0

, используя это, вы можете скрыть какой-то элемент и показать другое из меню. –

+0

Не работает:/ – Christer

+0

Вставьте здесь свою функцию фрагмента. –

2

отключить в фрагменте Пункт в меню использовать его с фрагментом:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(false); 
} 

Удалить onCreateOptionsMenu() внутри деятельности, и использовать внутри фрагмента, как:

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     inflater.inflate(R.menu.main, menu); 
    } 
+0

в mainActivity? – Christer

+0

проверить это http://developer.android.com/reference/android/app/Fragment.html#setHasOptionsMenu(boolean) – Androider

+0

проверить обновленный ответ кажется более полезным – Androider

0

Я думаю, что вы пытаетесь отключить эту кнопку Home на AppBar который переключает NavigationDrawer.

Лучший способа я могу думать делать это:

В методе onOptionItemSelected:

protected onOptionItemSelected(MenuItem item) 
{ 
    if(item.getItemId() == android.R.id.home) 
    { 
      // do anything you want here 
    } 
} 

Это поможет вам переопределить кнопку Home.

Более если вы хотите заменить, что гамбургер Icon с По умолчанию значок стрелки, вы можете использовать

mNavigationDrawer.setDrawerIndicatorEnabled(false); 

Кроме того, если вы хотите, чтобы отключить ящик Размах Функциональность также вы можете использовать

drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); 

Надеюсь, что это поможет. :)

0

OMG, мой плохой ...

Это было MenuItems в NavigationView я хотел отключить ...

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
navigationView.getMenu().findItem(R.id.nav_amount).setEnabled(false); 

Спасибо за помощь, хотя :)

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

  • Нет связанных вопросов^_^