Ver la Versión Completa : [ CONSULTA ] Cambiar color de Action Bar desde otra clase
kaiser75
10/02/15, 16:45:53
Hay manera de llamar "ActionBar actionBar = getSupportActionBar();" desde una clase externa y despues llamarla en las activitys?. Tengo este codigo en cada activity, y me funciana bien, como puedo ponerlo en una clase externa?:
ActionBar actionBar = getSupportActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#dcdcdc")));
LEAJIM_454
10/02/15, 17:34:40
Tal vez lo que tu buscas es Shared Preferences, no veo otra manera de hacer eso, el genio de Kriogen o mocelet tal vez conocen otra forma, saludos.
mocelet
10/02/15, 18:01:15
Mientras tengas la referencia al objeto ActionBar puedes cambiar el color desde donde quieras. La referencia la consigues bien porque tu clase externa se la pida a la actividad o bien porque la actividad se lo comunique a tu clase externa en el onResume por ejemplo.
kriogeN
10/02/15, 18:15:56
Muy muy muy mala idea usar referencias a la View de una Activity (incluida la ActionBar) desde otra Activity. Cuando vuelves atrás a una Activity no tiene porque ser la misma Activity, puede haberse destruido y volverse a crear, y por tanto no mantener las referencias y obtener un precioso NullPointerException cuando accedes a ella desde otra Activity.
¿Cómo cambiar la ActionBar de una Activity desde otra Activity posterior? Pues lanzándola con startActivityForResult y comprobar el Intent en onActivityResult o lo que ha dicho LEAJIM_454, almacenando el valor en una SharedPreference y comprobando el valor en el onResume de la Activity, que siempre se ejecutará al volver sea nueva o sea la misma.
mocelet
10/02/15, 18:38:07
Yo he entendido que quiere tener una clase externa a la actividad que cambie el color de la actividad actual (no de la anterior, que efectivamente igual ni existe ya), sea cual sea.
Si solo quiere cambiar el color al iniciar, que lo haga en el onResume claro, pero si quiere cambiarlo en cualquier otro momento tiene que saber cuál es la actividad actual. La única forma, por fea que sea, es guardar la referencia a la actividad.
kaiser75
11/02/15, 00:11:29
Como bien dice kriogeN, lo que quiero es poder cambiar el color desde la pantalla de ajustes con shared preferences, pero no doy con ello, ah y gracias kriogeN...porque tenia el precioso NullPointerException y no sabia de por donde me atacaba jajaja.
mocelet
11/02/15, 11:37:17
Entonces no quieres cambiar el color desde otra clase xD
En tu pantalla de ajustes guardas el color nada más, en Shared Preferences por ejemplo.
Pero el color propiamente lo cambia la propia actividad que tenga la barra, leyendo el color de la preferencia en el onResume y aplicándolo como haces ahora.
kaiser75
15/02/15, 18:21:59
Vale, he conseguido cambiar el color desde la pantalla de ajustes, pero, tengo que salir y volver a entrar en la aplicacion para que los cambios se apliquen :rolleyes:
mocelet
15/02/15, 18:58:02
¿Tu pantalla de opciones es una activity o un fragment?
¿El cambio de color lo haces en el onResume?
kaiser75
16/02/15, 09:39:10
La pantalla de opciones es un activity la cual extiendo de PreferenceActivity, y que accedo a ella desde MainActivity.
mocelet
16/02/15, 10:47:45
Bien, entonces el color de la barra lo tienes que cambiar desde el onResume de MainActivity, leyendo la preferencia y estableciendo el color. Y así no te hace falta volver a iniciar la app.
kaiser75
18/02/15, 17:05:16
Bueno, tengo un problemilla, a veces al volver a la activity principal desde otra activity (no la de preferencias) el color de la barra me desaparece y se queda en blanco :rolleyes:
kriogeN
18/02/15, 17:53:56
Bueno, tengo un problemilla, a veces al volver a la activity principal desde otra activity (no la de preferencias) el color de la barra me desaparece y se queda en blanco :rolleyes:
¿Estás guardando el valor en una SharedPreference y lo recuperas cada vez?
Si se pone de color blanco tiene pinta de que tomas un valor que por defecto es 0 (en ese caso realmente no sería blanco, sería totalmente transparente) y después no lo cambias.
kaiser75
21/02/15, 18:52:17
Pues si, efectivamente me dejaba el valor por defecto en 0, le puse 1 y ya funciona correctamente...Gracias kriogeN :ok:
kaiser75
29/06/15, 18:48:25
Volviendo al tema del color de la Action Bar, me pasa una cosa curiosa, tengo una pantalla de ajustes donde se puede cambiar el color de la barra, me funciona bien, lo que pasa es que por ejemplo al arrancar la aplicacion la barra sale negra durante 1 segundo y luego aparece la main activity con la barra de color, hay manera de evitar ese cambio de negro a color al inicio de la aplicacion?
kriogeN
29/06/15, 23:34:47
Volviendo al tema del color de la Action Bar, me pasa una cosa curiosa, tengo una pantalla de ajustes donde se puede cambiar el color de la barra, me funciona bien, lo que pasa es que por ejemplo al arrancar la aplicacion la barra sale negra durante 1 segundo y luego aparece la main activity con la barra de color, hay manera de evitar ese cambio de negro a color al inicio de la aplicacion?
Es algo que ocurre en todas las aplicaciones de Android, la única forma de que no aparezca la ActionBar negra es indicar en la configuración del Theme que no tiene ActionBar y luego activarla en el onCreate.
kaiser75
01/07/15, 10:35:20
Perfecto, he creado un estilo sin ActionBar y ahora no me sale la barra negra, arranca la aplicacion bastante mas rapido, gracias kriogeN :ok:
vBulletin® v3.8.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.