|
||
|
![]() |
![]() |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Cambiar color de Action Bar desde otra clase
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")));
__________________
|
|
#2
|
||||
|
||||
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.
|
#3
|
||||
|
||||
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.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
#4
|
||||
|
||||
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. |
#5
|
||||
|
||||
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.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
#6
|
||||
|
||||
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.
|
#7
|
||||
|
||||
Entonces no quieres cambiar el color desde otra clase
![]() 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.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
#8
|
||||
|
||||
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
![]()
__________________
|
#9
|
||||
|
||||
¿Tu pantalla de opciones es una activity o un fragment?
¿El cambio de color lo haces en el onResume?
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
#10
|
||||
|
||||
La pantalla de opciones es un activity la cual extiendo de PreferenceActivity, y que accedo a ella desde MainActivity.
__________________
|
#11
|
||||
|
||||
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.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
Gracias de parte de: | ||
#12
|
||||
|
||||
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
![]()
__________________
|
#13
|
||||
|
||||
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. |
Gracias de parte de: | ||
#14
|
||||
|
||||
Pues si, efectivamente me dejaba el valor por defecto en 0, le puse 1 y ya funciona correctamente...Gracias kriogeN
![]()
__________________
|
#15
|
||||
|
||||
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?
__________________
|
#16
|
||||
|
||||
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?
![]() |
Gracias de parte de: | ||
#17
|
||||
|
||||
Perfecto, he creado un estilo sin ActionBar y ahora no me sale la barra negra, arranca la aplicacion bastante mas rapido, gracias kriogeN
![]()
__________________
|
![]() |
![]() |
||||||
|