vertical - sliding menu android




Android cambia elementos de menú del cajón de navegación texto mediante programación (3)

Tengo el nuevo Cajón de navegación en mi aplicación y quiero cambiar el texto del título de la vista de navegación del título dinámicamente desde el código. He visto muchas publicaciones pero no puedo entender, ¿cómo puedo hacer esto? ¿Cómo puedo lograr esto correctamente?

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>


Este código se puede usar para agregar menús dinámicamente. funcionó para mí ... la parte principal del código es displayItems (); ..... pasa el String [] de elementos como un parámetro para la función ... funciona.

public class Courses extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {

    TextView nn,ne,np,nl;
    SharedPreferences sp;
    NavigationView navigationView;
    DrawerLayout drawer;
    ImageView img;
    NavigationView nv;
    int id;

String[] acc={"ACPFAT","CPFA","Tally.ERP 9 Simplified","D P F A","CA Articles","DAA","TFAP","Tally.ERP 9 - Specialization","GST (Goods and service Tax)"};

drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.setDrawerTitle(Gravity.CENTER,n);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, 
                 R.string.navigation_drawer_open,R.string.navigation_drawer_close);

drawer.addDrawerListener(toggle);
toggle.syncState();
navigationView.setNavigationItemSelectedListener(this);

Intent i=getIntent();
id=i.getIntExtra("button",0);

switch(id)
    {

        case R.id.account:
            img.setImageResource(R.drawable.acc);
            displayItems(acc);
            break;

        case R.id.modular:
            img.setImageResource(R.drawable.acc);
            displayItems(mod);
            break;

        case R.id.diploma:

            img.setImageResource(R.drawable.acc);
            displayItems(dc);
            break;

    }

public void displayItems(String[] a)
  {

    final NavigationView navigationView=findViewById(R.id.nav_view);
    final DrawerLayout drawer=findViewById(R.id.drawer_layout);
    Menu menu=navigationView.getMenu();
    SubMenu sb=menu.addSubMenu("Courses");

    int i=0;
    while(i<a.length)
    {
        sb.add(a[i]);
        i++;
    }
 }

Cambie el código como se muestra a continuación en caso de que cambie el nombre o elimine el elemento del menú de navegación.

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

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


}

¡Esto es correcto! Espero que esto funcione bien ...







menuitem