Para responder estritamente à pergunta: Use invalidate ():
invalid público inválido () desde: API nível 1
Invalide a exibição inteira. Se a vista estiver visível, o onDraw (Canvas) será chamado em algum momento no futuro. Isso deve ser chamado de um thread da interface do usuário. Para chamar de um thread que não seja da interface do usuário, chame postInvalidate ().
ViewGroup vg = findViewById (R.id.mainLayout);
vg.invalidate();
Agora, quando a Atividade é retomada, faz com que cada Visualização se desenhe. Nenhuma chamada para invalidar () deve ser necessária. Para aplicar o tema, faça-o antes de desenhar qualquer Visualização, ou seja, antes desetContentView(R.layout.mainscreen);
public void setTheme (int resid) Desde: API nível 1
Defina o tema base para este contexto. Observe que isso deve ser chamado antes que quaisquer visualizações sejam instanciadas no contexto (por exemplo, antes de chamar setContentView (View) ou inflar (int, ViewGroup)).
A referência do documento da API está aqui: http://developer.android.com/reference/android/view/ContextThemeWrapper.html#setTheme%28int%29
Como o método onDraw () funciona em Views já instanciadas, setTheme não funcionará. Eu não tenho experiência com temas, mas duas opções alternativas que posso pensar são:
- chame setTheme em onCreate () ou
- refazer setContentView (R.layout.mainscreen); para forçar o restabelecimento de todo o layout.