2017-09-11 4 views
-1

J'ai une tâche simple:Menu Android avec ActionBarDrawerToggle

Créer un menu avec quelques éléments qui ouvre sur un bouton de la barre d'action bascule.

Mon activity_main est:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.mt.gmtelandroid.MainActivity" 
android:id="@+id/drawer_layout"> 



<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
</LinearLayout> 

<android.support.design.widget.NavigationView 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    app:menu="@menu/navigation_menu" 
    android:layout_gravity="start" 
    app:headerLayout="@layout/navigation_header" 
    > 

</android.support.design.widget.NavigationView> 

et le menu de navigation

<menu xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/meni1" > 
<item android:id="@+id/navhome" 
    android:title="Home" 
    android:icon="@mipmap/ic_home_black_24dp" 
    > 
</item> 
<item android:id="@+id/navtasks" android:title="Zadaci" 
    android:icon="@mipmap/ic_drive_eta_black_24dp" 
    ></item> 
<item android:id="@+id/navlogout" android:title="Odjava" 
    android:icon="@mipmap/ic_close_black_24dp"> 
</item> 
<item android:id="@+id/myname" android:title="Moj Nalog" 
    android:icon="@mipmap/ic_account_circle_black_24dp"> 
</item> 

Activité principale est

public class MainActivity extends AppCompatActivity 
{ 

    private DrawerLayout mDrawerLayout; 
    private ActionBarDrawerToggle mtogle; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); 
     mtogle = new ActionBarDrawerToggle(this, mDrawerLayout,R.string.open_menu, R.string.close_menu); 

     mDrawerLayout.addDrawerListener(mtogle); 
     mtogle.syncState(); 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    } 


    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 


     if (mtogle.onOptionsItemSelected(item)) 
     { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

Je ne sais pas comment ajouter un écouteur surMenuItemClick afin de pouvoir gérer ce qui se passe lorsqu'un utilisateur clique sur un élément de menu. J'ai essayé d'ajouter du code à la méthode onOptionsItemSelected, mais quand je l'ai débogué, j'ai découvert que cette méthode est seulement appelée sur toggle buton click, pas sur l'élément de menu click !?

+0

avez-vous appelé cette méthode: @Override public boolean onCreateOptionsMenu (menu Menu) { getMenuInflater(). gonfle (R.menu.menu_main, menu); renvoyer true; } –

Répondre

1

Vous devez mettre en œuvre les callbacks pour NavigationView.OnNavigationItemSelectedListener dans Activity comme ci-dessous,

public class HomeActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener 

que poignée cliquez cas de NavigationView comme ci-dessous le code

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

     if (id == R.id.navhome) { 
      // perform your action here 
     } else if (id == R.id.navtasks) {      
      // perform your action here 
     } else if (id == R.id.navlogout) { 
      // perform your action here 
     }else if (id == R.id.myname) { 
      // perform your action here 
     } 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
} 
+0

J'ai fait ce que vous avez demandé, mais cliquer sur le menuitem n'appelle jamais surNavigationItemSelected!? :( – djomla87

+0

@ djomla87 partager votre nouveau code avec question –

0

Essayez d'ajouter:

rappel implémente NavigationView.OnNavigationItemSelectedListener, Il remplacera onNavigationItemSelected (point MenuItem) {...}. Vous pouvez mettre votre code de clic ici par item.getItemId().

J'espère que cela vous aide.