2010-11-08 62 views
2

在Android中的選項菜單中單擊某個MenuItem時,需要在同一菜單中更改不同MenuItem的標題。有什麼辦法做到這一點?在Android中,如何更改onOptionsItemSelected()中的不同MenuItem的標題

單擊選項菜單中的MenuItem時,會調用onOptionsItemSelected(MenuItem menuitem)。 您可以更改作爲onOptionsItemSelected(MenuItem菜單項)上 中的參數傳遞的MenuItem的標題,但不能改變任何其他MenuItem的標題。我需要知道如何更改不作爲參數傳遞給OnOptionsItemSelected(),但屬於同一菜單的MenuItem的標題。

我沒有找到一種方法來獲取包含onOptionsItemSelected方法(當任何MenuItem被點擊時調用)內的Menu的句柄。

很多謝謝。

回答

6

從Android開發指南:http://developer.android.com/guide/topics/ui/menus.html

改變菜單的時候纔打開

onCreateOptionsMenu()方法被稱爲僅第一次選項菜單打開。系統保留並重新使用您在此方法中定義的菜單,直到您的活動被銷燬。如果您想在每次打開時更改選項菜單,則必須覆蓋onPrepareOptionsMenu()方法。這會傳遞給您當前存在的Menu對象。如果您想根據應用程序的當前狀態刪除,添加,禁用或啓用菜單項,這非常有用。

注意:您不應該根據當前焦點的視圖更改選項菜單中的項目。在觸摸模式下(當用戶不使用軌跡球或d-pad時),視圖無法對焦,所以您絕不應該使用焦點作爲修改選項菜單中項目的基礎。如果您想提供與視圖相關的菜單項,請使用上下文菜單。

+0

Thanx ..它幫助我更新我的菜單狀態:-) – Rekha 2012-10-12 05:14:52

2

我不確定您可以更改標題,但您可以刪除該項目,然後添加另一個帶有相同標識的標題。

Menu foo; 
    foo.removeItem(id); 
    foo.add(0, id, 0, R.string.a_new_title); 
2

但當MenuItemMenu資源的六倍多,如果你菜單上單擊,然後onPrepareOptionsMenu被稱爲一次或兩次。

  • 隨着菜單上簡單的點擊,則onPrepareOptionsMenu只調用一次

  • 當您單擊菜單,然後點擊「更多」選項,即第六個選項,然後onPrepareOptionsMenu被調用了兩次。

我希望這會幫助別人。

5

你可以這樣做。

public boolean onPrepareOptionsMenu(Menu menu) { 
    menu.clear(); 
    getMenuInflater().inflate(R.menu.photoviewer_menu, menu); 
    MenuItem item = menu.findItem(R.id.photoviewer_menu_button); 
    item.setTitle("title"); 
    return super.onPrepareOptionsMenu(menu); 
} 
3

這樣做肯定會嘗試............

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.addappointmentmenu, menu); 

    menu.findItem(R.id.add_appontment_menu).setTitle("Add Appointment"); 
    //Similarly set for all your menu's has above 

    return true; 
} 
相關問題