2016-12-13 10 views
1

クリックするとスムーズにフラグメントを開くことができます。ここでAndroid DrawerLayout - アイテムのクリックが遅すぎる

はコードです -

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    navigationView.setNavigationItemSelectedListener(this); 
      drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); 
      drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 

      // Set the drawer toggle as the DrawerListener 
      drawerLayout.setDrawerListener(drawerToggle); 

      drawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        onBackPressed(); 
       } 
      }); 

      if (getSupportActionBar() != null) { 

       getSupportActionBar().setDisplayHomeAsUpEnabled(false); 
       getSupportActionBar().setHomeButtonEnabled(false); 
      } 

      onNavigationItemSelected(navigationView.getMenu().getItem(0)); 

      @Override 
     public boolean onNavigationItemSelected(MenuItem menuItem) { 

      /* clear backstack of all elements but the last one 
      * which is the car keys screen 
      */ 
      for (int i = 1; i < fm.getBackStackEntryCount(); ++i) { 
       fm.popBackStack(); 
      } 
    } 

     navigationView.getMenu().findItem(R.id.navigation_settings).setVisible(false); 


     switch (menuItem.getItemId()) { 
      case R.id.navigation_home: 
       fragment = new HomeFragment(); 
       break; 

     } 

     if (menuItem.getGroupId() == R.id.group_top) { 

      navigationView.getMenu().setGroupCheckable(R.id.group_bottom, false, true); 
      navigationView.getMenu().setGroupCheckable(R.id.group_top, true, true); 
     } else { 

      navigationView.getMenu().setGroupCheckable(R.id.group_bottom, true, true); 
      navigationView.getMenu().setGroupCheckable(R.id.group_top, false, true); 
     } 

     //Update highlighted item in the navigation menu 
     menuItem.setChecked(true); 

     if (fragment != null) { 
      drawerLayout.closeDrawer(navigationView); 
      setTitle(menuItem.getTitle()); 

      menuItem.setChecked(true); 
      fm.beginTransaction() 
        .replace(R.id.container, fragment) 
        .addToBackStack("fragment") 
        .commit(); 
      return true; 
     } 



     return false; 
    } 

これはMainActivityです。

どこが間違っていますか?なぜそれはスムーズに動かないのですか?

は、事前にありがとう:)それは彼の他のコマンドを終了しますので、少しの遅れでスレッドに入れる

+0

? – yanivtwin

+0

ナビゲーション引出し前 –

答えて

0

試して、同じよう:

遅れている
new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
       if(drawerLayout!=null) 
        drawerLayout.closeDrawer(navigationView); 
     } 
    }, 150); 
関連する問題