Para responder estrictamente la pregunta: Use invalidate ():
public void invalidate () Desde: API Nivel 1
Invalidar toda la vista. Si la vista es visible, se llamará a onDraw (Canvas) en algún momento en el futuro. Esto debe llamarse desde un hilo de la interfaz de usuario. Para llamar desde un subproceso que no sea UI, llame a postInvalidate ().
ViewGroup vg = findViewById (R.id.mainLayout);
vg.invalidate();
Ahora, cuando se reanuda la Actividad, hace que cada Vista se dibuje sola. No se necesita una llamada para invalidar (). Para aplicar el tema, asegúrese de hacerlo antes de dibujar cualquier Vista, es decir, antessetContentView(R.layout.mainscreen);
public void setTheme (int resid) Desde: API Nivel 1
Establezca el tema base para este contexto. Tenga en cuenta que esto debería llamarse antes de que cualquier vista sea instanciada en el Contexto (por ejemplo, antes de llamar a setContentView (View) o inflate (int, ViewGroup)).
La referencia de documentación API está aquí: http://developer.android.com/reference/android/view/ContextThemeWrapper.html#setTheme%28int%29
Dado que el método onDraw () funciona en vistas ya instanciadas, setTheme no funcionará. No tengo experiencia con temas, pero dos opciones alternativas que puedo pensar son:
- llame a setTheme en onCreate () en su lugar, o
- rehacer setContentView (R.layout.mainscreen); para forzar la reinstalación de todo el diseño.