W systemie Android można uzyskać bieżący motyw działania jako obiekt Resource.Theme
z getTheme()
. Możesz również ustawić motyw na inny za pomocą tego identyfikatora zasobu innej kompozycji, np. setTheme(R.style.Theme_MyTheme)
.Android: jak uzyskać identyfikator zasobu bieżącego motywu?
Ale jak mogę sprawdzić, czy to jest tego warte - czy obecny temat jest już tym, który chciałbym ustawić? Szukam czegoś podobnego getTheme().getResourceId()
, aby napisać coś takiego:
protected void onResume() {
int newThemeId = loadNewTheme();
if (newThemeId != getTheme().getResourceId()) { // !!!! How to do this?
setTheme(newThemeId);
// and rebuild the gui, which is expensive
}
}
jakieś pomysły?
Nie sądzę, że identyfikator zasobu jest atrybutem klasy kompozycji. Temat może zostać utworzony z pliku XML źródła, ale wówczas utracone zostanie odniesienie do identyfikatora. Temat sam mógł zostać zmieniony, a wtedy nie miałoby sensu być związany z pewnym identyfikatorem zasobu. Co więcej, motyw może być tworzony w locie w kodzie. Będziesz musiał śledzić, który identyfikator źródła został użyty do bieżącego motywu. – Anderson
Ta odpowiedź pomoże. Sprawdź to http://stackoverflow.com/a/26302184/4639479 –