Android 导航抽屉项目单击侦听器不起作用

问题描述 投票:0回答:1

每次单击导航抽屉项目时,它都会关闭并且不会重定向到意图活动


      /* MainActivity.java */

        NavigationView navigationView = findViewById(R.id.navigationview);
        Menu menu = navigationView.getMenu();

        // Set a click listener for the Twitter menu item
        MenuItem twitterMenuItem = menu.findItem(R.id.twitter_menu);
        twitterMenuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                // Handle Twitter menu item click
                startActivity(new Intent(MainActivity.this, DemoActivity.class));
                return true;
            }
        });

   
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                // Handle navigation view item clicks here
                int id = item.getItemId();

                if (id == R.id.twitter_menu) {
                    // Handle Twitter menu item click
                    startActivity(new Intent(MainActivity.this, DemoActivity.class));
                    // Return true to indicate that the item is handled
                    return true;
                }

      
                drawerLayout.closeDrawer(GravityCompat.START);

                // Return false to indicate that the item is not handled
                return false;
            }
        });

下面是我的 sidemenu.xml,位于菜单资源目录中

/*sidemenu.xml*/


<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">





    <item android:title="Rewards">
        <menu>
            <item
                android:id="@+id/share_menu"
                android:title="Earn Rewards"
                android:icon="@drawable/share_vector" />

            <item
                android:id="@+id/refer_menu"
                android:title="Redeem your Points"
                android:icon="@drawable/refer_vector" />
        </menu>
    </item>

    <group android:id="@+id/social_group">
        <item
            android:title="Follow Us on Social Media">
            <menu>
                <item
                    android:id="@+id/youtube_menu"
                    android:title="Linkedin"
                    android:icon="@drawable/youtube_color_svgrepo_com" />

                <item
                    android:id="@+id/twitter_menu"
                    android:title="X"
                    android:icon="@drawable/xlog"/>

                <item
                    android:id="@+id/facebook_menu"
                    android:title="Facebook"
                    android:icon="@drawable/facebook_color_svgrepo_com" />

                <item
                    android:id="@+id/whatsapp_menu"
                    android:title="WhatsApp"
                    android:icon="@drawable/whatsapp_svgrepo_com" />

            </menu>
        </item>
    </group>

</menu>


/* activity_main.xml */

<androidx.drawerlayout.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawerlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start"
    tools:context=".MainActivity">

     <!--Sidemenu-->
    <com.google.android.material.navigation.NavigationView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:id="@+id/navigationview"
        app:headerLayout="@layout/headerfile"
        app:menu="@menu/sidemenu"
        android:layout_gravity="start"/>
    <!--My ScrollView Con-->

    <androidx.core.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
           

            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:background="@drawable/gradient"
                android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:title="CAMPUS"
                app:titleMarginStart="40dp"
                app:titleTextAppearance="@style/ToolbarTitleText">

                <ImageView
                    android:id="@+id/bell_icon"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/wallet"
                    android:layout_gravity="end"
                    android:layout_marginEnd="16dp"
                    android:contentDescription="Bell Icon"/>

            </androidx.appcompat.widget.Toolbar>

  </androidx.constraintlayout.widget.ConstraintLayout>


       </androidx.core.widget.NestedScrollView>
   

</androidx.drawerlayout.widget.DrawerLayout>

我已经尝试了所有可能的方法,我知道每次出现相同的问题时,当导航抽屉项目单击它时,它会关闭抽屉布局,但什么也没有发生

java android drawerlayout android-navigationview
1个回答
0
投票

这里可能会出现很多问题,首先,在 onMenuItemClick 方法体中打一个断点,看看当你点击菜单项时是否调用了它,或者,你可以在里面放一些日志来检查,然后你可以检查单击的菜单项的 id,也许这是正在调用的另一个 id,因为我可以看到您在

drawerLayout.closeDrawer(GravityCompat.START); 
方法中有
onMenuItemClick
并且有可能这部分不是 false
if (id == R.id.twitter_menu) {
并且结束了只关上抽屉

© www.soinside.com 2019 - 2024. All rights reserved.