2015-01-11 36 views
0

我是新來的android和我最近研究了選項菜單的文檔,其中我還沒有了解 onPrerpareOptionMenu() 。在我的應用程序中,當一個按鈕是點擊我想改變相同活動的選項菜單。在按鈕上創建一個新的菜單選項菜單點擊同一活動

謝謝...

public boolean onPrepareOptionsMenu(Menu menu){ 
    return false; 
    menu.clear(); //Clear view of previous menu 
    MenuInflater inflater = getMenuInflater(); 
    if()//condition 
     inflater.inflate(R.menu.view_record, menu); 
    else 
     inflater.inflate(R.menu.add_record, menu); 
    return super.onPrepareOptionsMenu(menu); 
} 
+0

我使用ischangedstate,但沒有顯示出來。 – abhishek

+0

嘗試使用onCreateOptionsMenu(菜單菜單),而不是onPrepareOptionsMenu(菜單菜單) –

+0

oncreateoptionmenu被稱爲只有一次,然後它將如何重新加載按鈕上的選項菜單點擊 – abhishek

回答

0

我這樣做是我的幾個攝像頭應用取決於什麼相機功能是通過一種滑動控制啓用(雖然按鈕也適用),即用於捕捉圖像改變菜單或視頻。

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    super.onPrepareOptionsMenu(menu); 
    MenuItem someThing1 = menu.findItem(R.id.someThing1); 
    MenuItem someThing2 = menu.findItem(R.id.someThing2); 
    MenuItem someThing3 = menu.findItem(R.id.someThing3); 
    MenuItem someThing4 = menu.findItem(R.id.someThing4); 
    MenuItem someThing5 = menu.findItem(R.id.someThing5); 
    MenuItem help = menu.findItem(R.id.help); 
    MenuItem about = menu.findItem(R.id.about); 
    if (some_condition) { //could be button state or..? 
     someThing1.setTitle(R.string.someThing1a); 
     someThing2.setTitle(R.string.someThing2a); 
     someThing3.setTitle(R.string.someThing3a); 
     someThing4.setVisible(false); 
     someThing5.setVisible(false); 
     help.setVisible(false); 
     about.setVisible(false); 
    } else { 
     someThing1.setTitle(R.string.someThing1b); 
     someThing2.setTitle(R.string.someThing2b); 
     someThing3.setTitle(R.string.someThing3b); 
     someThing4.setVisible(true); 
     someThing5.setVisible(true); 
     help.setVisible(true); 
     about.setVisible(true); 
    } 
    return true; // this is important to call so that new menu is shown 
} 
+0

感謝您的解決方案。您可以解釋一下invalidateoptionmenu()爲什麼以及如何使用它?再次感謝 – abhishek

+0

根據API:public void invalidateOptionsMenu()在API級別11中添加 聲明選項菜單已更改,因此應該重新創建。 onCreateOptionsMenu(Menu)方法將在下次需要顯示時調用。對於 Rick