0

我目前正在尝试添加一个子菜单并让它做我想做的事。我一直在网上寻找,似乎无法确定是否可能。

基本上我有一个名为“登录”的按钮,用户将按下该按钮来加载子菜单,其中将有一个标签显示用户名,然后是一个可编辑的文本框,允许用户输入他们想要的用户名。

这可能吗?

我目前拥有的代码是

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    TextView txtUsername = (TextView) findViewById(R.id.txtUsername);
    EditText edit_username = (EditText) findViewById(R.id.edit_username);
    super.onCreateOptionsMenu(menu);
    SubMenu sub = menu.addSubMenu(0,1,0, "Sign-In");
    sub.add(0,11,0,edit_username);    //I have noticed this is wrong but the only way I thought it would work
    sub.add(0,12,0,txtUsername);    //same for here

    //add button for okaying the username

    return true;
}

显然这是在创建选项菜单中,但是就像我说的那样,我希望它在用户单击使用 signIn void 登录时加载菜单

public void signIn(View view) 
{
 //load menu here
}
4

1 回答 1

1

您可以向菜单项添加任意数量的子菜单,但不能嵌套子菜单。(参考

带有子菜单的菜单在少数情况下使用,其中一个菜单项有许多相关的子菜单项。

您可以通过将元素添加为 . 当您的应用程序具有许多可以组织成主题的功能时,子菜单很有用,例如 PC 应用程序菜单栏中的项目(文件、编辑、视图等)。

请参阅此文档以了解有关选项菜单的更多信息。

我认为将用户名和密码字段添加到选项菜单没有意义。您可以使用子活动或对话框片段来显示这些字段。

在您的代码中,您有两个问题。

SubMenu sub = menu.addSubMenu(0,1,0, "登录"); sub.add(0,11,0,edit_username);
sub.add(0,12,0,txt用户名);

  1. 你不能嵌套子菜单。
  2. add (int groupId, int itemId, int order, CharSequence title)显然将 CharSequence 作为参数而不是 View 小部件(您的 edittext 和 textview)。
于 2013-01-22T09:46:59.453 回答