我想隱藏/顯示menuItem,但得到NPE。它在onPrepareOptionsMenu中工作,但不在onCreate中。默認情況下,它應該是不可見的。Android MenuItem setVisible
例如在我的片段的onCreate我想這樣做:
if (condition) menuItem.setvisible(true);
,但它讓我NPE上菜單項。
活動
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.inventory_list_toolbar, menu);
return true;
}
@Override
protected void onCreate(final Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start_inventory);
mToolbar = findViewById(R.id.inventory_list_toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
}
片段:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public void onPrepareOptionsMenu(Menu menu){
super.onPrepareOptionsMenu(menu);
menuItem = menu.findItem(R.id.inventory_list_menu_add);
menuItem.setVisible(false);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
請給你的答案添加一些解釋。 – ivaigult
聲明菜單菜單;'然後將其初始化爲@Override public boolean onCreateOptionsMenu(Menu menu){充氣菜單;這會將項目添加到操作欄(如果存在)。 this.menu =菜單; getMenuInflater()。inflate(R.menu.main,menu); 返回true; } 如果你想隱藏/顯示菜單,使用 if(menu!= null)MenuItem item_up = menu.findItem(R.id.action_up); item_up.setVisible(true); item_up.setVisible(true); } –
@AkshayChopde:編輯答案的解釋,不要將它添加爲註釋 –