2012-10-17 40 views
0

我是android的noob,我試圖根據用戶選擇膨脹兩個不同的菜單。但是,菜單不會切換。無論用戶選擇什麼,每次都會膨脹相同的菜單。我已經試過並用各種參數檢查了我的if/else statmente,並且僅通過膨脹相同的菜單,菜單充填器仍然無法正確響應。任何幫助是極大的讚賞。無論用戶選擇什麼爲什麼不是MenuInflater響應?

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    // TODO Auto-generated method stub 
    super.onCreateOptionsMenu(menu); 
    popUpMenu = getMenuInflater(); 
    //popUpMenu.inflate(R.menu.cool_menu, menu); 
    if(mypodcast==null){ 
     popUpMenu.inflate(R.menu.cool_menu, menu); 
    }else { 
     popUpMenu.inflate(R.menu.podcast, menu); 
    } 
    return true; 
} 

回答

1

相同的菜單膨脹每次。

這是因爲onCreateOptionsMenu()是每次打開菜單時不叫,從the documentation

這只是調用一次,第一次顯示選項菜單。要更新菜單每次顯示時,看到onPrepareOptionsMenu(Menu)

如果你想改變你需要做的這onPrepareOptionsMenu()菜單。不過,我不認爲每次調用onPrepareOptionsMenu()時都可以或應該膨脹一個新的菜單。但是,您可以合併這兩個菜單,並根據此方法中的要求更改每個菜單項的可見性。

+0

謝謝山姆。你剛剛接受了我的教育。 –

+0

很高興我可以幫你教你,受過教育的聲音有點苛刻。也許你只是將​​ContextMenu與OptionsMenu混淆了,因爲每次打開菜單時調用onCreateContextMenu()'_is_ ... – Sam