Acceder

Ver la Versión Completa : [ CONSULTA ] drawer. actualizar titulo en toolBar con el item seleccionado


gonza28
14/05/15, 10:43:52
Hola Compañeros.
Podrian ayudarme por favor?

Estoy usando menu drawer. Me encuentro con un problema. (Problema para mi, en mi caso)
El titulo en la barra de acciones siempre es el string app_name, o sea el nombre de la app.

Quisiera que al seleccionar un item en el menu drawer, por ejemplo: Ejemplo 1
El titulo sea justamente ese: Ejemplo 1.
Si lanzo otro fragmento con el nombre: Ejemplo 2. Estaria bueno para mi que el titulo cambie a ese nombre. ya sea que yo pueda programar en el string o de cualquier manera me da igual. son opciones estaticas, esas opciones siempre van a estar alli..

Muchas gracias por todo. Ojalá puedan darme una mano.
saludos.

oxot
14/05/15, 14:16:43
Veamos, el navigation drawer hace algo así por defecto si usas el código de Google.
Básicamente se trata de una variable de clase que llaman mTitle (un String) que será el título de la toolbar. Entonces, cada vez que haces un fragment transaction, te encargas de llamar a un método onSectionAttached:


public void onSectionAttached(int number) {
switch (number) {
case 1:
mTitle = getString(R.string.title_section2);
break;
case 2:
mTitle = getString(R.string.title_section3);
break;
case 3:
mTitle = getString(R.string.title_section4);
break;
case 4:
mTitle = getString(R.string.title_section6);
break;
}
}


Como ves yo uso valores de Strings.xml, para cambiar el valor de esta variable.
Luego tengo un método restoreActionBar dónde está la magia:


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


dónde actualizo el título de la barra y listo.

El método restoreActionBar lo llamo como último método dentro de onNavigationDrawerItemSelected, o sea, después de que el usuario ha pulsado algo dentro del navigation Drawer.

Si quieres simplificarlo mucho puedes usar sólo restoreActioBar (String) y mandarle tu directamente el string que quieras.

Salu2

gonza28
14/05/15, 21:44:34
Veamos, el navigation drawer hace algo así por defecto si usas el código de Google.
Básicamente se trata de una variable de clase que llaman mTitle (un String) que será el título de la toolbar. Entonces, cada vez que haces un fragment transaction, te encargas de llamar a un método onSectionAttached:


public void onSectionAttached(int number) {
switch (number) {
case 1:
mTitle = getString(R.string.title_section2);
break;
case 2:
mTitle = getString(R.string.title_section3);
break;
case 3:
mTitle = getString(R.string.title_section4);
break;
case 4:
mTitle = getString(R.string.title_section6);
break;
}
}


Como ves yo uso valores de Strings.xml, para cambiar el valor de esta variable.
Luego tengo un método restoreActionBar dónde está la magia:


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


dónde actualizo el título de la barra y listo.

El método restoreActionBar lo llamo como último método dentro de onNavigationDrawerItemSelected, o sea, después de que el usuario ha pulsado algo dentro del navigation Drawer.

Si quieres simplificarlo mucho puedes usar sólo restoreActioBar (String) y mandarle tu directamente el string que quieras.

Salu2

Muchas gracias.

No estoy con la libreria por defecto. estoy probando esta libreria del menu drawer https://github.com/rudsonlive/NavigationDrawer-MaterialDesign

Revisé bastante, pero no pude dar con esa opcion si es que la tiene y falta completar.
La tienes visto a esta libreria? que me recomiendas?

Muchas gracias.

oxot
15/05/15, 13:39:35
Yo simplemente lo he usado en una app de momento pero el código por defecto de Google funciona perfectamente. No sé si esta librería tendrá más opciones de personalización que tu estarás usando. Yo, para lo básico, me quedo con el código por defecto.

En cualquier caso, si miras su actividad principal:
https://github.com/rudsonlive/NavigationDrawer-MaterialDesign/blob/a26ce31c25d64f2b2efe44e6fee4564751ab3d60/demo/src/main/java/br/liveo/ndrawer/SettingsActivity.java
hace uso del método getSupportActionBar luego la implementación del navigation drawer es muy similar a la genérica y puedes serguir usando el método restoreActionBar que te comenté.
Prueba a llamarlo desde la actividad en la que quieres cambiar el título y cámbialo directamente a ver qué pasa (házlo al final de todo del método por si hay opciones de configuración que realiza esta librería) y con suerte no te lo reescribirá. Como en la librería te dice que no uses el método onCreate, pues intenta hacerlo en onResume y a ver. Ya contarás.