2012-08-17 192 views
0

我试图通过单击菜单按钮来显示名为“share”的菜单项。 现在我需要为这个共享菜单项创建一个子菜单项。 当共享菜单项被点击时,子菜单项应该是可见的(当第一次点击第一次变成下一次看不见时等等。)。 我发现几个解决方案显示子菜单项,但这些菜单项一起显示。菜单中的子菜单

这是我创建菜单

public boolean onCreateOptionsMenu(Menu m) { 

    m.add(1,1,0,"one").setIcon(R.drawable.icon); 
    m.add(1,2,0,"two").setIcon(R.drawable.icon); 
    m.add(1,3,0,"three").setIcon(R.drawable.icon); 
    m.add(1,4,0,"four").setIcon(R.drawable.icon); 
    m.getItem(0).setVisible(false); 
    m.getItem(1).setVisible(false); 
    return true; 
} 

和我onPrepareOptionsMenu()

public boolean onPrepareOptionsMenu(Menu m) { 
    if(isvisible) 
    { 
    isvisible = false; 
    m.getItem(0).setVisible(true); 

    m.getItem(1).setVisible(true); 


} 
else{ 
    isvisible = true; 
    m.getItem(0).setVisible(false); 

    m.getItem(1).setVisible(false); 

} 


    return super.onPrepareOptionsMenu(m); 

} 

我需要在我的菜单项,而不是在单击要显示剩余的两个项目代码菜单按钮。 任何人都可以建议我请

回答

1

覆盖下面的方法:

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    // TODO Auto-generated method stub 
    return super.onPrepareOptionsMenu(menu); 
} 

上述方法被调用时显示的菜单前的每一次。

Here you can maintain a bool and hide the submenu depending upon the condition of your check. 

编辑:

默认set bool to falseon false show the menu and set the bool to true并在下次调用检查这个布尔,如果这是真的,将其设置为false并进行菜单invisible.use这条线使菜单可见或不可见:

menu.getItem(index).getSubMenu().getItem(index).setVisible(true); 将布尔存储在sharedpreference

+0

当模拟器中的菜单按钮被点击时,默认情况下菜单项消失。 当您单击菜单项时,您可以提供更多有关如何让菜单项“共享”的子菜单项不可见的信息 – 2012-08-17 06:41:28

+0

检查已编辑的答案。 – 2012-08-17 08:32:20

+0

感谢您的回复。 我正在使用此代码将菜单项添加到我的应用程序 menu.add(0,0,0,“New Game”); menu.add(0,1,0,“Quit”); 现在,如果我使用menu.getItem(0).setVisible(false);第一个菜单项变得不可见,这不是我所需要的。 请再提示我 – 2012-08-17 09:01:02