Я знаю, что есть способ установить темы, определив в styles.xml и использовать его как тоКак изменить тему из другого ресурса приложения в Android?
setTheme(android.R.style.MyTheme);
Однако, я хочу, чтобы получить темы из другого приложения, которые я разработал, а также. Я знаю имена ресурсов, и на самом деле я могу получить идентификатор темы с этим блоком кода;
Resources res = getPackageManager().getResourcesForApplication("com.example.theme");
int resThemeId = res.getIdentifier("my_theme","style","com.example.theme");
Когда я отлаживаю, я вижу, что resThemeId не равен нулю.
Тогда мне нужна последняя команда для установки этой темы. Перед функцией super.onCreate(), я пытаюсь реализовать этот метод, но, кажется, он не работает
setTheme(resThemeId);
Но вместо этого, если я напишу ниже заявление, я прекрасно работает
setTheme(android.R.style.Theme_Holo_Light);
Так , что мне делать, чтобы использовать тему из другого ресурса пакета?
Вы можете получить идентификатор ресурса из другого пакета, но эти ресурсы не существуют в вашем APK. Загрузка ресурсов с помощью 'PackageManager # getResourcesForApplication (String packageName)' должна работать на drawables, strings, bools и т. Д. Однако я не считаю, что возможно, и определенно не рекомендуется, загружать другую тему APK. –
Хотя я могу получить drawables, строки, булевы из других ресурсов пакета, я также ожидаю получить темы. Почему невозможно? – Berkay92
Возможно (см. Мой ответ). Вам нужно переопределить getResrouces, чтобы вернуть ресурсы другого приложения, чтобы вы могли применить тему. Это также вернет все строки, макеты, чертежи и другие ресурсы из другого приложения, поэтому не рекомендуется. –