2017-05-24 17 views
-2

Ich bin Navigation drawer in meiner App implementieren. Alles funktioniert gut. Ich habe ein Problem, wenn ich auf Hamburger icon klicke, öffnet die Navigationsschublade nicht. Wenn ich danach wische, wird die Navigationsleiste erfolgreich geöffnet. Nach dem Zurückwischen kann ich die Navigationsleiste erfolgreich schließen. Jetzt funktioniert der Hamburger-Icon-Klick richtig und ich kann die Navigationsleiste öffnen, indem ich auf das Icon klicke.Hamburger-Symbol klicken nicht funktioniert in Schubladenlayout

Also nehme ich Hilfe von Log

hier ist ein Code

toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


       if (drawer.isDrawerOpen(GravityCompat.START)) { 
        drawer.closeDrawers(); 
        Log.e("drawer 1","clicked"); 
        return; 
       } else { 
        Log.e("drawer 2","clicked"); 
        drawer.openDrawer(GravityCompat.START); 
       } 
      } 
     }); 



private void setUpNavigationView() { 
     int[][] states = new int[][]{ 
       new int[]{android.R.attr.state_enabled}, // enabled 
       new int[]{-android.R.attr.state_enabled}, // disabled 
       new int[]{-android.R.attr.state_checked}, // unchecked 
       new int[]{android.R.attr.state_pressed}, 
       new int[]{android.R.attr.state_selected} // pressed 
     }; 

     int[] colors = new int[]{ 
       Color.BLACK, 
       Color.RED, 
       Color.GREEN, 
       Color.BLUE, 
       Color.WHITE 

     }; 

     ColorStateList csl = new ColorStateList(states, colors); 

     navigationView.setItemTextColor(csl); 
     navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 


      @Override 
      public boolean onNavigationItemSelected(MenuItem menuItem) { 

       switch (menuItem.getItemId()) { 

        case R.id.nav_home: 

         drawer.closeDrawers(); 
         break; 
        case R.id.nav_fav: 
         if (sharedPreferences.contains("favHotelId")) { 

          searchNearHotel("favHtl"); 
         } 
          else 
           Toast.makeText(getApplicationContext(),"No favorite hotels",Toast.LENGTH_SHORT).show(); 


         break; 

        case R.id.nav_sign_out:      drawer.closeDrawers(); 
         break; 
       } 
       if (menuItem.isChecked()) { 
        menuItem.setChecked(false); 
       } else { 
        menuItem.setChecked(true); 
       } 
       menuItem.setChecked(true); 

       loadHomeFragment(); 

       return true; 
      } 
     }); 

     final ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.openDrawer, R.string.closeDrawer) { 

      @Override 
      public void onDrawerClosed(View drawerView) { 
       // Code here will be triggered once the drawer closes as we dont want anything to happen so we leave this blank 
       super.onDrawerClosed(drawerView); 
       invalidateOptionsMenu(); 

      } 

      @Override 
      public void onDrawerOpened(View drawerView) { 
       // Code here will be triggered once the drawer open as we dont want anything to happen so we leave this blank 
       super.onDrawerOpened(drawerView); 
       drawer.openDrawer(drawerView); 
       Log.e("drawer 3","clicked"); 
       invalidateOptionsMenu(); 
      } 
     }; 

     //Setting the actionbarToggle to drawer layout 
     drawer.setDrawerListener(mDrawerToggle); 
     mDrawerToggle.syncState(); 

     //calling sync state is necessary or else your hamburger icon wont show up 


     View header = navigationView.getHeaderView(0); 
     tv_email = (TextView) header.findViewById(R.id.drawer_userName); 
     drawer_userNameEmail = (TextView) 
     } 
    } 

Als ich zum ersten Mal auf das Symbol klicken die public void onDrawerOpened(View drawerView) Methode ist das nicht heißt, warum meine Schublade öffnet sich nicht. Nach swipe gesture in der Navigationsleiste wird die Methode erfolgreich aufgerufen.

Bitte helfen Sie mir herauszufinden, wo das Problem liegt.

+0

zeigen ur Protokolldetails zum ersten Mal Klick entspricht. –

+1

Bitte geben Sie den vollständigen Code in Bezug auf Navigation Schublade –

+0

beim ersten Klick nur 'Schublade 2 angeklickt' in Log anzeigen und nach Swipe' Schublade 3 geklickt' auch in Log @Neo –

Antwort

0

überschreiben diese Methode in Ihrem Activity

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    //return true for ActionBarToggle to handle the touch event 
    if (mDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    mDrawerToggle.syncState(); 
} 
+0

immer noch nicht arbeiten @ rafsanahmad007 –

0

einfach Ihre Navigationsleiste mit Android Studio-Vorlage erstellen.

folgen diesen Fluss:

fileMenu-->new-->newProject-->configure your new project-->select navigation drawer activity-->next/finish 

Hier sind einige ref. zur Demonstration:

navigation 1

navigation 2

Verwandte Themen