2015-10-22 7 views
20

Ich habe die neue Navigationsschublade in meiner App und ich möchte den Navigationsansicht Menüeinträge Titel Text dynamisch aus Code ändern. Ich habe viele Beiträge gesehen, aber ich kann nicht herausfinden, wie ich das tun kann. Wie kann ich das richtig erreichen?Android Ändern der Navigation Schublade Menüelemente Text programmgesteuert

MainActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 

setContentView(R.layout.activity_main); 
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
fab.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
       .setAction("Action", null).show(); 
    } 
}); 

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
     this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
drawer.setDrawerListener(toggle); 
toggle.syncState(); 

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
navigationView.setNavigationItemSelectedListener(this); 

} 

activity_main_drawer.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

<group android:checkableBehavior="single"> 
    <item android:id="@+id/nav_camara" android:icon="@android:drawable/ic_menu_camera" 
     android:title="Import" /> 
    <item android:id="@+id/nav_gallery" android:icon="@android:drawable/ic_menu_gallery" 
     android:title="Gallery" /> 
    <item android:id="@+id/nav_slideshow" android:icon="@android:drawable/ic_menu_slideshow" 
     android:title="Slideshow" /> 
    <item android:id="@+id/nav_manage" android:icon="@android:drawable/ic_menu_manage" 
     android:title="Tools" /> 
</group> 

<item android:title="Communicate"> 
    <menu> 
     <item android:id="@+id/nav_share" android:icon="@android:drawable/ic_menu_share" 
      android:title="Share" /> 
     <item android:id="@+id/nav_send" android:icon="@android:drawable/ic_menu_send" 
      android:title="Send" /> 
    </menu> 
</item> 

+1

Der einzige Weg, wie Sie das Menü dynamisch ändern können, ist es zu löschen und laden Sie ein anderes Menü: http://StackOverflow.com/Questions/31203212/How-To-Inflate- android-navigationview-with-ein anderes-menü-dynamisch-während-oncli –

Antwort

66

Sie können den Titel des Postens Navigationsmenü programmatisch durch Hinzufügen von folgenden Zeilen in MainActivity.java Datei ändern.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ... 
    //other stuff here 
    ... 
    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 

    // get menu from navigationView 
    Menu menu = navigationView.getMenu(); 

    // find MenuItem you want to change 
    MenuItem nav_camara = menu.findItem(R.id.nav_camara); 

    // set new title to the MenuItem 
    nav_camara.setTitle("NewTitleForCamera"); 

    // do the same for other MenuItems 
    MenuItem nav_gallery = menu.findItem(R.id.nav_gallery); 
    nav_gallery.setTitle("NewTitleForGallery"); 

    // add NavigationItemSelectedListener to check the navigation clicks 
    navigationView.setNavigationItemSelectedListener(this); 

} 

Das funktioniert gut für mich. Ich hoffe, es wird dir helfen.

+3

Antwort sollte akzeptiert werden! – BenRoob

+1

besten Ansatz im Internet – Mikhail

9

Ändern Sie den Code wie unten, falls Sie Artikel von Navigationsmenü Schublade Liste

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    if (navigationView != null) { 
     Menu menu = navigationView.getMenu(); 
     menu.findItem(R.id.nav_profile).setTitle("My Account"); 
     menu.findItem(R.id.nav_mng_task).setTitle("Control Task"); 
     //menu.findItem(R.id.nav_pkg_manage).setVisible(false);//In case you want to remove menu item 
     navigationView.setNavigationItemSelectedListener(this); 
    } 
-1
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main_menus); 


    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 

    Menu menu = navigationView.getMenu(); 
    MenuItem nav_login = menu.findItem(R.id.nav_logout); 
nav_login.setTitle("Login"); 


} 

Das ist richtig umbenennen oder entfernen! Hoffe, das läuft gut ......

+0

On Meine Anwendung funktioniert gut ...... –