2012-01-31 41 views
6

Tôi có một chức năng onclick cho trình đơn của mình nhưng tôi không thể tìm ra ID là gì cho menu phụ của tôi để tôi có thể yêu cầu menu phụ phải làm gì khi người dùng nhấp vào nó. Tôi đã tạo trình đơn con của mình theo lập trình bằng cách sử dụng mã bên dưới. Vì vậy, nếu ai đó có thể xin vui lòng giải thích cho tôi như thế nào tôi biết những gì id là cho mỗi mục của menu phụ tôi rất nhiều sẽ đánh giá cao nó.Thêm một onclick vào menu con?

@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); 
    } 
} 

Trả lời

10

Khi bạn đang thêm

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

Việc bố trí tham số cho add() phương pháp là Android Menu Add Method

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

ItemID ID item độc đáo. Sử dụng NONE nếu bạn không cần một ID duy nhất.

Là id của mục menu của bạn. Nó phải là duy nhất. Giống như bạn nói 15,20,21. Id này sẽ hoạt động như android:id="@+id/15". Được sẽ được sử dụng khi bạn đang đi để kiểm tra mà mục được nhấp

ví dụ

@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

Làm việc một cách hoàn hảo. Cảm ơn bạn @Arslan. Tìm thấy điều này sau một tìm kiếm dài. – Diffy

+0

Bạn có thể giúp tôi thay đổi màu của các mục menu con không? Tôi đã tìm kiếm mã của ABS nhưng không thể lấy được. @RandomlyKnighted? – Diffy

Các vấn đề liên quan