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");

但是,我找不到需要将itemId(方法中的第二个参数)分配给/的add方法,所以我可以将它们设置为可见或不可见?有人知道怎么做吗?EditDelete

4

2 回答 2

2

menu.add如果您将其保存到变量中,则返回 aMenuItem然后您可以更改它们菜单的可见性,例如

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);
于 2013-02-26T18:21:04.070 回答
2

add()返回一个 MenuItem,只需保存此值即可随时显示/隐藏它。

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

另请阅读Java 命名约定,其中指出变量(如edit)应以小写字母开头。

于 2013-02-26T18:21:10.803 回答