简体   繁体   English

onNavigationItemSelected() 问题

[英]onNavigationItemSelected() problems

when click on any menu item, there is no response, they suppose to navigate to Destination Fragment当单击任何菜单项时,没有响应,他们假设导航到 Destination Fragment

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        item.setChecked(true);

        int id = item.getItemId();
        switch (id) {

            case R.id.mealFragment:
                navController.navigate(R.id.mealFragment);
                break;

            case R.id.drinksFragment:
                navController.navigate(R.id.drinksFragment);
                break;

            case R.id.dessertFragment:
                navController.navigate(R.id.dessertFragment);
                break;

        }
        drawer.closeDrawer(GravityCompat.START);
        return true;

    }






// setting up on time Navigation 

private void setUpNavigation() {
    drawer = findViewById(R.id.drawer_layout);
    NavigationView navigationView = findViewById(R.id.nav_view);
    navController = Navigation.findNavController(this, R.id.nav_host_fragment);
    NavigationUI.setupActionBarWithNavController(this, navController, drawer);
    NavigationUI.setupWithNavController(navigationView, navController);
    navigationView.setNavigationItemSelectedListener(this);

}

after call setUpNavigation() .在调用 setUpNavigation() 之后。 App keeps sticking on mealFragment() as its start Destination on navigation graph应用程序一直坚持使用 mealFragment() 作为导航图上的起始目的地

I was programmatically adding HeaderView to NavigationView Hence I already had NavigationView我以编程方式将HeaderView添加到NavigationView因此我已经有了NavigationView

I called navigationView.bringToFront();我打电话给navigationView.bringToFront();

Here is code snippet for context :这是上下文的代码片段:

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

Did you set listner for navigationView as:您是否将导航视图的侦听器设置为:

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

befor implementing the onNavigationItemSelected(MenuItem item) as:在实现 onNavigationItemSelected(MenuItem item) 之前:

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

    if (id == R.id.nav_camara) {
        // Handle the camera action
    } else if (id == R.id.nav_gallery) {

    } else if (id == R.id.nav_slideshow) {

    } else if (id == R.id.nav_manage) {



    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

Check with a Log.d() call if the onNavigationItemSelected event is fired or not.使用Log.d()调用检查onNavigationItemSelected事件是否被触发。 If not, check your the layout file for the clickable attribute:如果没有,请检查布局文件的可点击属性:

<DrawerLayout
    android:clickable="true"
    android:focusable="true"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM