Expectro
07/09/12, 22:27:32
Hola,
Estoy empezando en esto de programar aplicaciones para Android y no se si será posible lo que quiero hacer...
Resulta que estoy utilizando la actionbarsherlock y me he preparado una Activity que hereda de SherlockActivity ( de la cual heredarán despues las demás clases de mi aplicación) y según el tema seleccionado ( en preferencias ) selecciono un estilo para la aplicación.
Este código uso para cambiar según el tema que está seleccionado.
private void changeTheme() {
String value;
value = getActualTheme(); // da el valor del tema seleccionado sacandolo de las preferences
if (value.compareTo(THEME_DARK_NUMBER) == 0) {
setTheme(THEME_DARK);
} else if (value.compareTo(THEME_LIGHT_NUMBER) == 0) {
setTheme(THEME_LIGHT);
} else if (value.compareTo(THEME_LIGHT_DARK_ACTIONBAR_NUMBER ) == 0) {
setTheme(THEME_LIGHT_DARK_ACTIONBAR);
}
}
El problema es cuando tengo que cargar el menu del actionbar, que segun el estilo elegido los iconos no se ven al ser negros o blancos.
Para solucionarlo he realizado una función para detectar el tema y a partir de ahí elegir un menú u otro ( de un xml ).
private int menu(Activity a , int menu ) {
int type = getColor(a);
if (menu == MENU_MENUACTIVITY ){
if (type == 1)
return R.menu.activity_menu;
else
return R.menu.activity_menu_light;
}
return (Integer) null;
}
private int getColor(Activity a){
String value;
value = getActualTheme();
if (value.compareTo(THEME_DARK_NUMBER) == 0) {
return 1;
}else if (value.compareTo(THEME_LIGHT_NUMBER) == 0) {
return 2;
}else if (value.compareTo(THEME_LIGHT_DARK_ACTIONBAR_NUMBER ) == 0) {
return 1;
}else{
return 1;
}
}
Lo que pasa que cada vez que añado una nueva activity tengo que modificar este metodo añadiendo la nueva activity y la constante nueva para pasarle.
La pregunta es... se puede realizar de alguna forma no tenga que modificar la clase "base" cada vez que añado una nueva activity??
Saludos y gracias
Estoy empezando en esto de programar aplicaciones para Android y no se si será posible lo que quiero hacer...
Resulta que estoy utilizando la actionbarsherlock y me he preparado una Activity que hereda de SherlockActivity ( de la cual heredarán despues las demás clases de mi aplicación) y según el tema seleccionado ( en preferencias ) selecciono un estilo para la aplicación.
Este código uso para cambiar según el tema que está seleccionado.
private void changeTheme() {
String value;
value = getActualTheme(); // da el valor del tema seleccionado sacandolo de las preferences
if (value.compareTo(THEME_DARK_NUMBER) == 0) {
setTheme(THEME_DARK);
} else if (value.compareTo(THEME_LIGHT_NUMBER) == 0) {
setTheme(THEME_LIGHT);
} else if (value.compareTo(THEME_LIGHT_DARK_ACTIONBAR_NUMBER ) == 0) {
setTheme(THEME_LIGHT_DARK_ACTIONBAR);
}
}
El problema es cuando tengo que cargar el menu del actionbar, que segun el estilo elegido los iconos no se ven al ser negros o blancos.
Para solucionarlo he realizado una función para detectar el tema y a partir de ahí elegir un menú u otro ( de un xml ).
private int menu(Activity a , int menu ) {
int type = getColor(a);
if (menu == MENU_MENUACTIVITY ){
if (type == 1)
return R.menu.activity_menu;
else
return R.menu.activity_menu_light;
}
return (Integer) null;
}
private int getColor(Activity a){
String value;
value = getActualTheme();
if (value.compareTo(THEME_DARK_NUMBER) == 0) {
return 1;
}else if (value.compareTo(THEME_LIGHT_NUMBER) == 0) {
return 2;
}else if (value.compareTo(THEME_LIGHT_DARK_ACTIONBAR_NUMBER ) == 0) {
return 1;
}else{
return 1;
}
}
Lo que pasa que cada vez que añado una nueva activity tengo que modificar este metodo añadiendo la nueva activity y la constante nueva para pasarle.
La pregunta es... se puede realizar de alguna forma no tenga que modificar la clase "base" cada vez que añado una nueva activity??
Saludos y gracias