Я опубликую свое решение, которое на самом деле не добавляет ничего нового, но объединяет различные советы.
После изменения темы упражнения и, если необходимо, (зависит от того, что вы ищете) изприложение:
public void updateTheme( Activity a, int themeID ) {
a.getApplication().setTheme( themeID );
a.setTheme( themeID );
}
Затем вам необходимо заново создать действие (как после изменения конфигурации).Для OS 11> есть API, вместо этого для предыдущих версий вы должны заставить его завершить и перезапустить действие, как указано Udinic .
public boolean isBeforeHoneycomb() {
return Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB;
}
public void reload() {
if( isBeforeHoneycomb() ) {
Intent intent = getIntent();
overridePendingTransition(0, 0);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
overridePendingTransition(0, 0);
startActivity(intent);
}else{
recreate();
}
}