2015-02-11 66 views
1

我需要在啓動時根據在啓動時創建的幾個變量來更改啓動時操作欄中菜單項的標題。 但由於某種原因,我不能簡單地這樣做,因爲菜單項需要時間膨脹也許? 我該如何解決這個問題。 下面是我的嘗試,但它拋出java.lang.IndexOutOfBoundsExceptionAndroid在啓動時動態設置菜單項

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    inflater.inflate(R.menu.map_fragment_action_menu, menu); 
    mOptionsMenu = menu; 
    mOptionsMenu.getItem(R.id.map_fragment_action_layers_0).setTitle("my title"); 
} 

附:我正在使用一個片段,我也嘗試在onCreateView()方法中設置標題,但仍然不起作用。

回答

1

您需要改爲使用方法Menu#findItem()

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    inflater.inflate(R.menu.map_fragment_action_menu, menu); 
    mOptionsMenu = menu; 
    mOptionsMenu.findItem(R.id.map_fragment_action_layers_0).setTitle("my title"); 
} 

Menu#getItem()預計索引,而不是菜單項的ID。例如,如果此菜單項是菜單中的第一項,則可以使用

mOptionsMenu.getItem(0).setTitle("my title"); 
+0

謝謝,findItem完成了工作 – Ams 2015-02-11 16:16:20

+0

很高興,這有所幫助。 – 2015-02-11 16:16:55