2016-06-20 5 views
1

Erster Punkt markiert ist und Rest ist zu hoch Licht nicht in der Lage:Android Navigationsleiste Menüpunkt zu hohem Licht Nicht in der Lage Artikel ausgewählt

Hier ist mein bg Selektor:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@color/accent_translucent" android:state_pressed="true"/> 
<item android:drawable="@android:color/transparent"/> 

I

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

  2. onNavigationItemSelected(navigationView.getMenu().findItem(R.id.nav_profile));

  3. navigationView.setCheckedItem(id);

Nichts scheint zu funktionieren

<?xml version="1.0" encoding="utf-8"?> 

<group 
    android:checkableBehavior="single"> 

    <item 
     android:id="@+id/drawer_main" 
     android:checked="true" 
     android:icon="@drawable/ic_home_black_24dp" 
     android:title="@string/dashboard"/> 

    <item 
     android:id="@+id/drawer_profile" 

     android:icon="@drawable/ic_favorite_black_24dp" 
     android:title="@string/profile"/> 

    <item 
     android:id="@+id/drawer_third" 

     android:icon="@drawable/ic_file_download_black_24dp" 
     android:title="@string/leaderboard"/> 

    <item 
     android:id="@+id/drawer_fourt" 

     android:icon="@drawable/ic_more_horiz_black_24dp" 
     android:title="@string/notification"/> 

    <item 
     android:id="@+id/drawer_fifth" 

     android:icon="@drawable/ic_settings_black_24dp" 
     android:title="@string/logout"/> 

</group> 

navigationView = (NavigationView) findViewById(R.id.navigation_view); 
    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 

     @Override 
     public boolean onNavigationItemSelected(MenuItem menuItem) { 

      int id = menuItem.getItemId(); 

      switch (id) { 
       case R.id.drawer_dashboard: 
        Intent i = new Intent(getApplicationContext(), MainActivity.class); 
        startActivity(i); 
        break; 
case R.id.drawer_profile: 
        Intent j = new Intent(getApplicationContext(), secondActivity.class); 
        startActivity(j); 
        break; 

werden Irgendwelche Ideen

hilfreich sein, wenn ich unten Code verwende ich aber nicht in der Lage hervorheben kann neue Aktivität

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 

     @Override 
     public boolean onNavigationItemSelected(MenuItem menuItem) { 

      int id = menuItem.getItemId(); 
      menuItem.setChecked(true); 
      drawerLayout.closeDrawers(); 
      return true; 
+0

Keine Ahnung, warum Sie diese Zeile aufrufen - onNavigationItemSelected (navigationView.getMenu(). FindItem (R.id.dracker_dashboard)); – Neo

+0

Ich habe versucht, es Code aus dem Stack .. Der Rest Code gehört mir – STS

+0

Ich habe den Code aktualisiert .. Können Sie jetzt auschecken – STS

Antwort

0

Android ermöglicht sehr begrenzten Zugang von Menüpunkten zu starten. Um ein Menüelement hervorzuheben, verwenden Sie am besten ein verblasstes Symbol im Menü. Wenn Sie das Symbol markieren möchten, ersetzen Sie das Symbol durch farbigere Symbole.

navigationView.getMenu().findItem(R.id.drawer_dashboard‌).setIcon(R.drawable.icon_highlighted_icon); 

und für Rest die normalen Symbole zurücksetzen.

Zusätzlich versuchen, Ihren alten Code -

onNavigationItemSelected(navigationView.getMenu().getItem(id)); 
navigationView.setCheckedItem(id); 

Hier id durch aktuelle Element Position ersetzen.

Hoffe, dass es Ihnen :)

helfen
+1

Bitte überprüfen Sie aktualisierte Frage ... – STS

+0

Aktualisiert meine Antwort, bitte überprüfen :) – Neo

+0

bin bekommen Fehlerindex out of exception ... ich habe Array nicht deklariert. Es ist bcoz – STS

1

Wenn die Ansicht erstellt wird, bitte versuchen Sie es getItem (int index) Methode zu verwenden, um alle MenuItem zu bekommen, und dann setCheckable (true) nennen, ist es sicher ist, kann überprüfbar sein.

Verwandte Themen