2013-05-26 17 views
25

我想爲Android製作Option Menu,我已訪問此網站。在他們的腳本中,我找到了onPrepareOptionsMenu,我試着編譯並運行使用Android 2.3.3編譯器,無論有沒有onPrepareOptionsMenu,都可以,但是我沒有看到任何區別。onPrepareOptionsMenu做什麼?

public boolean onCreateOptionsMenu(Menu menu){ 
//code here 
} 

public boolean onOptionsItemSelected(MenuItem item){ 
//code here 
} 

public boolean onPrepareOptionsMenu(Menu menu){ 
//code here 
} 

究竟是什麼onPrepareOptionsMenu方法呢?這種方法很重要嗎?我可以刪除該方法嗎?


加成

哦,我還聽到Android 3.0的約Action Bar,它說,行動酒吧是化妝Option Menu的替代方式,它採用onPrepareOptionsMenu。是對的嗎?

謝謝...

+0

請只閱讀文檔。它是爲此而創建的。如果你不明白它做什麼的具體點,那就問問題。 http://developer.android.com/reference/android/app/Activity.html#onPrepareOptionsMenu(android.view.Menu) –

+0

@ZouZou:對不起,我是Android新手,我不知道有一個文檔直到你告訴我。謝謝。 – Tutompita

+1

當用戶按下菜單按鈕(物理或操作欄上)時調用它。 –

回答

35

拿在API一看:

準備屏幕的標準選項菜單顯示。在菜單顯示之前,每當顯示菜單時都會調用它。您可以使用此方法高效地啓用/禁用項目或以其他方式動態修改內容。

+1

謝謝! 「動態修改內容」一詞解釋一切! – Tutompita

+0

@Tutompita如果這個答案滿足你,你可以標記爲正確的。 – Silox

+0

如果動態修改內容會更好,可以通過示例 – Killer

7

如果你想在菜單顯示給用戶之前改變菜單,你可以把代碼放入onPrepareOptionsMenu。在某些情況下,我動態地使用它來禁用某些菜單選項。

由於當一個人可能要禁用菜單選項的例子,我有一個應用程序,其中有指定目標的一種方式。我的一個菜單選項是計算到目的地的路線。但是,如果未指定目的地,該選項不適用,因此我使用onPrepareOptionsMenu在不適用時禁用該菜單選項。

從Android 3.0的超越,還有的動作條,這是一個菜單欄。最重要的項目會進入ActionBar本身,但當操作欄上沒有足夠空間時會出現溢出。可以指定菜單項應始終位於溢出菜單中,並且永遠不會位於操作欄本身。在某些設備上,操作欄溢出對應於設備上的永久菜單按鈕,而在沒有菜單按鈕的其他設備上,溢出菜單在操作欄的右側顯示爲三個垂直點。

+0

解釋爲什麼要禁用菜單選項?舉例說明我們需要禁用菜單選項的情況嗎? – Tutompita

+1

我舉了一個例子。如果此答案符合您的要求,您可以將其標記爲正確,並/或將其標記爲有用。 – Stochastically

+0

感謝你給出的例子,它給了我另一種這種方法的想法。我看過一個有三個垂直點的應用程序,但它運行在我的2.3.4 Android中。他們是如何做到的? – Tutompita

0

onCreateOptionsMenu被調用一次,第一次創建你的活動時。如果它返回false,則不顯示選項菜單,並且從不會調用onPrepareOptionsMenu。

如果onCreateOptionsMenu返回true,則顯示活動之前onPrepareOptionsMenu也叫,還每次選項菜單無效。如果您需要在創建後啓用/禁用,顯示/隱藏或添加/刪除項目,請使用onPrepareOptionsMenu。

如果你的菜單並沒有改變,使用onCreateOptionsMenu。