2012-01-31 77 views
6

我對我的菜單有一個onclick函數,但我無法弄清楚我的子菜單的ID是什麼,這樣我可以告訴子菜單當用戶點擊它時該做什麼。我使用下面的代碼以編程方式創建了我的子菜單。所以,如果有人可以請向我解釋我如何知道每個子菜單項的id是什麼,我將不勝感激。添加一個onclick子菜單?

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

    SubMenu submenu = menu.addSubMenu(0, Menu.FIRST, Menu.NONE, "Preferences"); 
    submenu.add(0, Menu.FIRST, Menu.NONE, "Get Last 5 Packets"); 
    submenu.add(0, Menu.FIRST, Menu.NONE, "Get Last 10 Packets"); 
    submenu.add(0, Menu.FIRST, Menu.NONE, "Get Last 20 Packets"); 
    inflater.inflate(R.menu.mainmenu, submenu); 

    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    // Handle item selection 
    switch (item.getItemId()) 
    { 
     case R.id.viewKML: 
      viewKML(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

回答

10

當要添加

submenu.add(0, Menu.FIRST, Menu.NONE, "Get Last 5 Packets"); 

對添加參數排列()方法是Android Menu Add Method

public abstract MenuItem add (int groupId, int itemId, int order, CharSequence title) 

ITEMID唯一項ID。如果您不需要唯一的ID,請使用NONE。

是菜單項的ID。它應該是獨一無二的。就像你說的15,20,21。此ID將如同android:id="@+id/15"一樣行事。當你要檢查哪些項目被點擊

是將用於e.g

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

     SubMenu submenu = menu.addSubMenu(0, Menu.FIRST, Menu.NONE, "Preferences"); 
     submenu.add(0, 10, Menu.NONE, "Get Last 5 Packets"); 
     submenu.add(0, 15, Menu.NONE, "Get Last 10 Packets"); 
     submenu.add(0, 20, Menu.NONE, "Get Last 20 Packets"); 
     inflater.inflate(R.menu.main_activity_menu, submenu); 

     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle item selection 
     switch (item.getItemId()) { 
     case 10: 
      Toast.makeText(LoginPageActivity.this, "Now "+item.getItemId(), Toast.LENGTH_SHORT).show(); 
      return true; 
     case 15: 
      Toast.makeText(LoginPageActivity.this, "Now = "+item.getItemId(), Toast.LENGTH_SHORT).show(); 
      return true; 
     case 20: 
      Toast.makeText(LoginPageActivity.this, "Now == "+item.getItemId(), Toast.LENGTH_SHORT).show(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
     } 
    } 
+0

完美。謝謝@阿爾斯蘭。經過漫長的搜索後找到了這個。 – Diffy 2014-06-14 20:57:33

+0

你能幫我改變子菜單的顏色嗎?我搜索了ABS的代碼,但無法得到它。 @RandomlyKnighted? – Diffy 2014-06-14 20:59:27