2016-09-17 46 views
-1

我正在开发一个应用程序,其中包含导航和滑动两者。但是在导航中,我无法在需要点击侦听器的位置编写代码,因此当我点击该导航部件项目时,它会响应。 下面是我的代码:如何在导航项上设置OnClickListiner

private void init_navigator(){ 
     // Navigation Drawer 
     mDrawerLayout = (DrawerLayout) findViewById(R.id.main_activity_DrawerLayout); 
     mDrawerLayout.setStatusBarBackgroundColor(getResources().getColor(R.color.primaryDark)); 
     mScrimInsetsFrameLayout = (ScrimInsetsFrameLayout) findViewById(R.id.main_activity_navigation_drawer_rootLayout); 

     mActionBarDrawerToggle = new ActionBarDrawerToggle 
       (
         this, 
         mDrawerLayout, 
         toolbar, 
         R.string.navigation_drawer_opened, 
         R.string.navigation_drawer_closed 
       ) 

     { 
      @Override 
      public void onDrawerSlide(View drawerView, float slideOffset) 
      { 
       // Disables the burger/arrow animation by default 
       super.onDrawerSlide(drawerView, 0); 
      } 
     }; 


     mDrawerLayout.setDrawerListener(mActionBarDrawerToggle); 

     if (getSupportActionBar() != null) 
     { 
      getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
      getSupportActionBar().setDisplayShowHomeEnabled(true); 
      getSupportActionBar().setHomeButtonEnabled(true); 
     } 

     mActionBarDrawerToggle.syncState(); 

     // Navigation Drawer layout width 
     int possibleMinDrawerWidth = UtilsDevice.getScreenWidth(this) - 
       UtilsMiscellaneous.getThemeAttributeDimensionSize(this, android.R.attr.actionBarSize); 
     int maxDrawerWidth = getResources().getDimensionPixelSize(R.dimen.navigation_drawer_max_width); 

     mScrimInsetsFrameLayout.getLayoutParams().width = Math.min(possibleMinDrawerWidth, maxDrawerWidth); 
     // Set the first item as selected for the first time 
     getSupportActionBar().setTitle(R.string.toolbar_title_home); 


    } 
} 

回答

0

实现此接口的活动

NavigationView.OnNavigationItemSelectedListener 

在OnCreate中

navigationView.setNavigationItemSelectedListener(this); 

手柄下面的部分代码在你加入这个活动

@Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    switch(id){ 
    case R.id.settings: 
    break; 
} 
} 
0

什么是您使用的导航itemlist:ListView,recyclerview或只是使用字符串数组显示项目标签。 后置代号为ITEMLIST 简单的项目 点击捕获通过:

@Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    switch(id){ 
    case R.id.settings: 
    break; 
     } 
    } 
0

使用此代码在乌拉圭回合主要活动

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

     if (id == R.id.nav_camera) { 
      // Handle the camera action 
     } else if (id == R.id.nav_gallery) { 
      Intent intent = new Intent(this, proShearch.class); 
      startActivityForResult(intent,2); 

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

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

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

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

     } 

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

您需要使用您的活动一起实现这个

implements NavigationView.OnNavigationItemSelectedListener 

并把ClickListener这样放入

navigationView.setNavigationItemSelectedListener(this); 

和处理单击这样

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