entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Hola soy nuevo en Android y estoy trabajando en una aplicación que use Navigation Drawer de Android Studio.

No quiero usar el método PlaceholderFragment que el mismo Android Studio genera y he creado tres fragmentos Menu1_Fragment, Menu2_fragment y Menu3_fragment y lo he implementado en el método onNavigationDrawerItemSelected así.

@Override
public void onNavigationDrawerItemSelected(int position) {
  Fragment fragment = null;
    switch (position){
        case 0:
            fragment = new Menu1_Fragment();
            break;
        case 1:
            fragment = new Menu2_Fragment();
            break;
        case 2:
            fragment = new Menu3_Fragment();
            break;
    }

    // update the main content by replacing fragments
    FragmentManager fragmentManager = getSupportFragmentManager();
    fragmentManager.beginTransaction()
            .replace(R.id.container, fragment)
            .commit();
} 

Hasta allí todo bien, el problema es con el título cuando selecciono Menu 1 en navigationDrawer, en el actionBar no cambia al titulo de Menu1_fragment, se queda cómo Ejemplo Navigation Drawer.

¿Cómo puedo hacer para que cuando seleccione Menu1_fragment cambie el título y remplace el título inicial (ejemplo Navigation Drawer) de la aplicación ?

2 Respuestas

3votos

white Puntos75840

Como actualizas el titulo? si lo que deseas es actualizarlo desde un Fragment vas a tener que obtener la actividad, dado que estos no tienen acceso a la api de ActionBar

intenta agregando al final de tu metodo onNavigationDrawerItemSelected esto:

getActivity().getActionBar().setTitle("titulo aca");

si lo que deseas es cambiar el titulo desde tu actividad entonces sería:

getSupportActionBar().setTitle("titulo aca");

0voto

edgon85 comentado

Gracias, estuve probando con el código que me diste y si me funciona pero solo para un fragment1, pero lo resolví con el método onSectionAttached y llamándolo en el método onNavigationDrawerItemSelected al final quedo así.

  @Override
public void onNavigationDrawerItemSelected(int position) {
  Fragment fragment = null;

    switch (position){
        case 0:
            fragment = new Menu1_Fragment();
            break;
        case 1:
            fragment = new Menu2_Fragment();
            break;
        case 2:
            fragment = new Menu3_Fragment();
            break;
    }
    onSectionAttached(position);
    FragmentManager fragmentManager = getSupportFragmentManager();
    fragmentManager.beginTransaction()
            .replace(R.id.container, fragment)
            .commit();
}

public void onSectionAttached(int number) {
     String[] stringArray = getResources().getStringArray(R.array.section);
     if (number >= 0) {
         mTitle = stringArray[number];
     }
 }

public void restoreActionBar() {
    ActionBar actionBar = getSupportActionBar();
   // actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
    actionBar.setDisplayShowTitleEnabled(true);
    actionBar.setTitle(mTitle);
}

Gracias por contestar :D

0voto

edgon85 Puntos190

encontré un tutotial de como utilizar NavigationDrawer y como solucionar este problema por si alguien lo quiere usar. Tutorial NaviationDreawer

0voto

Peter comentado

Estaría mejor que compartas la solución como tal y marques la respuesta como correcta.

Saludos.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta