Реализация Onclick в шаблоне Android Studio 3.5 Navigation Drawer - PullRequest
1 голос
/ 23 января 2020

Я использовал старую Android Studio и у меня не было проблем с шаблоном навигации. Я обновил мою android студию до 3.5, и теперь я не могу найти метод am, который запускает функцию onClick для определенного пункта меню. Я пытаюсь запустить метод, при котором по элементу навигационного ящика нажимается и отображается сообщение Toast. Я попытался с помощью метода navController.addOnDestinationChangedListener, но он работает только с фрагментами по умолчанию и при их открытии. Я хочу, чтобы сообщение Toast отображалось без открытия фрагмента. Вот как я это сделал до сих пор:

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

    //removing tint
    navigationView.setItemIconTintList(null);

    // 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.change_language, 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);


    navController.addOnDestinationChangedListener(new NavController.OnDestinationChangedListener() {
        @Override
        public void onDestinationChanged(@NonNull NavController controller, @NonNull
                NavDestination destination, @Nullable Bundle arguments) {
            if (destination.getId() == R.id.nav_home) {
                Toast.makeText(MainActivity.this, "Home has been clicked", Toast.LENGTH_LONG).show();
            }
            if (destination.getId() == R.id.nav_gallery) {
                Toast.makeText(MainActivity.this, "Gallery Has been clicked", Toast.LENGTH_LONG).show();
            }

        }
    });


}

@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();
}
...