wiem, że jest to sposób, aby ustawić tematów definiując w styles.xml i używać go jak tenJak zmienić motyw z innego zasobu aplikacji w systemie Android?
setTheme(android.R.style.MyTheme);
Jednak chcę się tematy z innej aplikacji, które ja rozwiniętym, jak również. Znam nazwy zasobów i faktycznie jestem w stanie uzyskać identyfikator tematu z tym blokiem kodu;
Resources res = getPackageManager().getResourcesForApplication("com.example.theme");
int resThemeId = res.getIdentifier("my_theme","style","com.example.theme");
Kiedy debuguję, widzę, że resThemeId nie jest zero.
Następnie potrzebuję końcowego polecenia, aby ustawić ten temat. Przed super.onCreate function(), staram się wdrożyć tę metodę, ale wydaje się, że nie działa
setTheme(resThemeId);
Ale zamiast tego, jeśli piszę poniżej oświadczenie, że działa dobrze
setTheme(android.R.style.Theme_Holo_Light);
Tak , co powinienem zrobić, aby użyć motywu z innego zasobu paczki?
Możesz pobrać identyfikator zasobu z innego pakietu, ale te zasoby nie istnieją w pliku APK. Ładowanie zasobów przy użyciu 'PackageManager # getResourcesForApplication (String nazwaPakietu)' powinno działać dla rysunków, łańcuchów, znaków itd. Jednak nie sądzę, aby było możliwe, i zdecydowanie nie zalecane, aby załadować inny motyw APK. –
Mimo że mogę uzyskać rysunki, łańcuchy, booleany z innych zasobów pakietu, również oczekuję motywów. Dlaczego to niemożliwe? – Berkay92
Jest to możliwe (patrz moja odpowiedź). Musisz nadpisać getResrouces, aby zwrócić zasoby drugiej aplikacji, aby móc zastosować motyw. Spowoduje to również zwrócenie wszystkich łańcuchów, układów, rysunków i innych zasobów z drugiej aplikacji, dlatego nie jest zalecane. –