android - 在抽屉菜单上设置可见性

标签 android jquery xml android-studio

我希望我的菜单在单击菜单时在其下方显示一个子菜单。我已经尝试了几种方法来做到这一点,但我就是做不到。每当我单击菜单时,应用程序都会崩溃。

这是我的Java

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();

    if (id == R.id.nav_gallery) {
        MenuItem acc1 = (MenuItem) findViewById(R.id.manage_profile);
    }
    else if (id == R.id.manage_profile) {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
    }
    else if (id == R.id.nav_gallery2) {
    }
    else if (id == R.id.search_school) {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
    }
    else if (id == R.id.school_vielnearby) {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
    }
    else if (id == R.id.school_vielall) {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
    }
    else if (id == R.id.nav_gallery3) {
    }
    else if (id == R.id.search_organization) {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
    }
    else if (id == R.id.organization_vielnearby) {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
    }
    else if (id == R.id.organization_vielall) {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
    }
    return true;
}

这是我的菜单 XML

    <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
    android:id="@+id/menuall">
    <item
        android:id="@+id/nav_gallery"
        android:icon="@android:drawable/ic_menu_gallery"
        android:title="My Account">
    </item>
    <item
        android:id="@+id/manage_profile"
        android:checked="false"
        android:visible="false"
        android:title="      Manage Account">
    </item>
    <item
        android:id="@+id/nav_gallery2"
        android:icon="@android:drawable/ic_menu_gallery"
        android:title="School">
    </item>
    <item
        android:id="@+id/search_school"
        android:checked="false"
        android:visible="false"
        android:title="      Search School"/>
    <item
        android:id="@+id/school_vielnearby"
        android:checked="false"
        android:visible="false"
        android:title="      View Nearby"/>
    <item
        android:id="@+id/school_vielall"
        android:checked="false"
        android:visible="false"
        android:title="      View All"/>
    <item
        android:id="@+id/nav_gallery3"
        android:icon="@android:drawable/ic_menu_gallery"
        android:title="Organization">
    </item>
    <item
        android:id="@+id/search_organization"
        android:checked="false"
        android:visible="false"
        android:title="      Search Organization"/>
    <item
        android:id="@+id/organization_vielnearby"
        android:checked="false"
        android:visible="false"
        android:title="      View Nearby"/>
    <item
        android:id="@+id/organization_vielall"
        android:checked="false"
        android:visible="false"
        android:title="      View All"/>
</group>
</menu>

所以基本上我希望我的应用程序在单击菜单时将可见性设置为 true。

这是我单击包含此代码的菜单时的 logcat

if (id == R.id.nav_gallery) {
        MenuItem acc1 = (MenuItem) findViewById(R.id.manage_profile);
        acc1.setVisible(true);

    }

    01-01 20:20:52.696  21622-21622/ph.schoolar.schoolar W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41bf7c08)
01-01 20:20:52.706  21622-21622/ph.schoolar.schoolar E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: ph.schoolar.schoolar, PID: 21622
    java.lang.NullPointerException
            at ph.schoolar.schoolar.StudentView.onNavigationItemSelected(StudentView.java:114)
            at android.support.design.widget.NavigationView$1.onMenuItemSelected(NavigationView.java:150)
            at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:811)
            at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
            at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:958)
            at android.support.design.internal.NavigationMenuPresenter$1.onClick(NavigationMenuPresenter.java:308)
            at android.view.View.performClick(View.java:4654)
            at android.view.View$PerformClick.run(View.java:19438)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:146)
            at android.app.ActivityThread.main(ActivityThread.java:5602)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
            at dalvik.system.NativeStart.main(Native Method)

最佳答案

无需查找 id。您已经从 onNavigationItemSelected(MenuItem item)

获得了 item 对象

删除行

MenuItem acc1 = (MenuItem) findViewById(R.id.manage_profile);

试试

item.setVisible(false); //true or false

根据您的要求 如果你使用过 NavigationView

navigationView = (NavigationView) findViewById(R.id.navigation_view);

    Menu menu = navigationView.getMenu();
    for (int menuItemIndex = 0; menuItemIndex < menu.size(); menuItemIndex++) {
        MenuItem menuItem= menu.getItem(menuItemIndex);
        if(menuItem.getItemId() == R.id.search_school){
            menuItem.setVisible(false);
        }
    }

关于android - 在抽屉菜单上设置可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34555972/

相关文章:

Android:让父 View 处理点击

jquery - IE再次失效,jQuery滚动震动剧烈

java - 如何在XML中编写段落并使用Java代码?

java - Android 4 设置样式

Android Ndk Error No rule to make target

android - 在我的 .aar 中 bundle 第三方库

java - 如何在 Android 上设置选定日期前一天的通知

javascript - jQuery:如何从一个路径中选择多个元素?

jquery - 我的 SQL 查询显示用户评论中最有用的评论

xml - 需要 XML 模式的小数位数