2013-02-26 74 views
0

隐藏菜单项我曾经这样做:没有充气的菜单布局

menu.setHeaderTitle("Available Actions"); 

      android.view.MenuItem Edit = menu.findItem(R.id.edit); 
      android.view.MenuItem Delete = menu.findItem(R.id.delete); 

      AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; 

      int position = info.position; 
      ListView lv = (ListView) v; 
      int firstVisible = lv.getFirstVisiblePosition(); 
      View rowView = lv.getChildAt(position - firstVisible); 

      if (Rateit.isUserLoggedIn == true) { 
       { 

        Edit.setVisible(true); 
        Delete.setVisible(true); 

       } else { 
        Edit.setVisible(false); 
        Delete.setVisible(false); 
       } 
      } else { 
       Edit.setVisible(false); 
       Delete.setVisible(false); 
      } 

现在的菜单是由不充气的布局设置,但这:

menu.add(2, 1, 0, "Edit"); 
menu.add(2, 2, 0, "Delete"); 

但是,我无法找到我需要将方法itemIdadd方法中的第二个参数)分配给Edit/Delete,这样我就可以将它们设置为可见或不可以?有人知道怎么做吗?

回答

2

menu.add返回MenuItem如果您保存到一个变量,你就可以改变他们的菜单的知名度,例如

MenuItem edit = menu.add(2, 1, 0, "Edit"); 
MenuItem delete = menu.add(2, 2, 0, "Delete"); 
edit.setVisible(Rateit.isUserLoggedIn); 
delete.setVisible(Rateit.isUserLoggedIn); 

,你也可以只链中的电话一起,如果你不需要访问菜单项后

menu.add(2, 1, 0, "Edit").setVisible(Rateit.isUserLoggedIn); 
menu.add(2, 2, 0, "Delete").setVisible(Rateit.isUserLoggedIn); 
+0

哦,这很简单。谢谢。 – KickingLettuce 2013-02-26 18:28:09

2

add()返回菜单项,只需保存这个值来显示/隐藏它,只要你想要的。

MenuItem edit = menu.add(2, 1, 0, "Edit"); 
// Do with "edit" as you please 

也请阅读Java naming conventions其中指出变量,如edit,应小写字母开头。

+0

是的,谢谢小写。我正在改变这一切。我知道,我是新人。选择了另一个答案,但在那个公平的提醒上标记了你。 – KickingLettuce 2013-02-26 18:32:30