2015-10-22 26 views
20

Uygulamamda yeni Navigasyon Çekmecesi var ve navigasyon görünümü menü öğelerini başlık metnini dinamik olarak koddan değiştirmek istiyorum. Birçok yayın izledim ama anlayamıyorum, bunu nasıl yapabilirim. Bunu nasıl doğru bir şekilde yapabilirim?Android Change Navigation Drawer Menü Öğeleri Programlanabilir metinler

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

Menüyü dinamik olarak değiştirebilmenin tek yolu temizlemek ve başka bir menü yüklemektir: http://stackoverflow.com/questions/31203212/how-to-inflate- android-navigationview-ile-başka-menü-dinamik olarak-oncli üzerinde –

cevap

66

Sen MainActivity.java dosyasında aşağıdaki satırı ekleyerek programlı Navigasyon Menü Biriminin başlığını değiştirebilir.

@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); 

} 

Bu benim için iyi çalışıyor. Umarım size yardımcı olur.

+3

Cevap kabul edilmeli! – BenRoob

+1

internette en iyi yaklaşım – Mikhail

9

Değişim aşağıda durumda adlandırmak veya navigasyon menüsü çekmece listeden öğeyi kaldırmak gibi kod

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"); 


} 

Bu doğrudur! Umarım bu iyi çalışır ......

+0

On My uygulama çalışıyor ...... –