Щоб суворо відповісти на питання: Використовуйте invalidate ():
публічна недійсність недійсна () Оскільки: API рівень 1
Недійсний весь погляд. Якщо вигляд видно, в якийсь момент в майбутньому буде викликано OnDraw (Canvas). Це потрібно викликати з потоку інтерфейсу користувача. Щоб зателефонувати з потоку, що не використовується UI, зателефонуйте postInvalidate ().
ViewGroup vg = findViewById (R.id.mainLayout);
vg.invalidate();
Тепер, коли активність поновлюється, вона змушує кожен Вид малювати себе. Не потрібно закликати недійсно (). Щоб застосувати тему, переконайтеся, що ви робите це перед тим, як намальовано будь-який вид, тобто перед цимsetContentView(R.layout.mainscreen);
public void setTheme (int залишається) З: API рівня 1
Встановіть базову тему для цього контексту. Зауважте, що це слід викликати перед тим, як будь-які представлення представлені у контексті (наприклад, перед викликом setContentView (Перегляд) або надути (int, ViewGroup)).
Довідкова інформація про API тут: http://developer.android.com/reference/android/view/ContextThemeWrapper.html#setTheme%28int%29
Оскільки метод onDraw () працює на вже створених вікнах, setTheme не працюватиме. Я сам не маю досвіду роботи з темами, але я думаю, що два альтернативні варіанти:
- call nameTheme в onCreate () замість цього, або
- повторити setContentView (R.layout.mainscreen); щоб змусити відновити весь макет.