android - 如何修复 Android studio 3.5 导航 Activity 模板 onNavigationItemSelected 不起作用

标签 android

我从 Android Studio 3.5 模板创建了一个新的抽屉导航 Activity ,但即使我正在监听 NavigationItemSelected,菜单项也无法单击。

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

    private AppBarConfiguration mAppBarConfiguration;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);

        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow,
                R.id.nav_tools, R.id.nav_share, R.id.nav_send)
                .setDrawerLayout(drawer)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
        NavigationUI.setupWithNavController(navigationView, navController);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onSupportNavigateUp() {
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        return NavigationUI.navigateUp(navController, mAppBarConfiguration)
                || super.onSupportNavigateUp();
    }

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
        Toast.makeText(this, menuItem.getTitle(), Toast.LENGTH_SHORT).show();
        return true;
    }
}

当我单击抽屉中的某个项目时,抽屉只是关闭,而不是显示 onNavigationItemSelected 方法中定义的 Toast。

最佳答案

此问题是由主要内容中的xml文件的排序问题引起的

默认顺序:

<com.google.android.material.navigation.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_main"
    app:menu="@menu/activity_main_drawer" />

<include
    layout="@layout/app_bar_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

更改为以下顺序:

<include
    layout="@layout/app_bar_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<com.google.android.material.navigation.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_main"
    app:menu="@menu/activity_main_drawer" />

关于android - 如何修复 Android studio 3.5 导航 Activity 模板 onNavigationItemSelected 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57702646/

相关文章:

android - 我如何更新 fresco SimpleDraweeView 的图像,如果它是由 setImageURI 设置一次

android - 请推荐 ionic 应用程序模板

android - 如何在kotlin中获得许可结果

android - Android 的选项卡式可分页 ActionBar 主导航上的哪个子导航模式?

android - 如何将 ImageView 从一个 Activity 发送到另一个 Activity

java - 在 Android Q 中从外部存储访问照片

android - Facebook 好友邀请已成功发送,但在 facebook-sdk.4.0 android 中未收到响应数据

android - 在 Activity 生命周期中什么时候开始动画?

java - Android Double 过于精确

java - 这两种初始化静态变量的方式有什么区别?