Я знаю, что этот вопрос задавали несколько раз. но я не могу найти проблему в моем случае. Я хочу изменить тему приложения, но мой цветPrimary, colorAccent и т. Д. Не меняются.setTheme не меняет цвета темы
my MainActivity расширяет BasicActivity. это выглядит следующим образом:
public class MainActivity extends BasicActivity {
public static String MY_PREFS = "MY_PREFS";
private SharedPreferences mySharedPreferences;
int prefMode = Activity.MODE_PRIVATE;
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
private ViewPagerAdapter adapter;
private TextView tabOne, tabTwo, tabThree;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
это мой BasicActivity (в данном случае я сделал это еще проще, чтобы показать, что тема взята из R.style):
public class BasicActivity extends AppCompatActivity {
public static String MY_PREFS = "MY_PREFS";
int prefMode = Activity.MODE_PRIVATE;
protected void onCreate(Bundle savedInstanceState) {
JsonParser parser = new JsonParser(getApplicationContext());
int resourceId = this.getResources().getIdentifier(parser.getThemeID(), "style", this.getPackageName());
setTheme(R.style.c_2ecc71_BC6C2B);
if (android.os.Build.VERSION.SDK_INT >= 19) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
super.onCreate(savedInstanceState);
}
}
и мой XML:
<style name="c_2ecc71_BC6C2B" parent="@style/Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#2ecc71</item>
<item name="colorPrimaryDark">#1ebc61</item>
<item name="colorAccent">#BC6C2B</item>
</style>
Согласно предыдущим вопросам, этот код должен работать, но в моем случае взгляды, которые colorPrimary в их XML еще грузятся цвета старой темы в InstEd на новом, даже если я установить тему Befo re call setContentView(R.layout.activity_main);
Спасибо!
Вы жестко закодированное тему в BaseActivity, чем получение ссылочного идентификатора ресурса. Вам нужно поставить setTheme (value_from_resourceId); BaseActivity всегда вызывает setTheme (R.style.c_2ecc71_BC6C2B); , чем время выполнения – Stallion