我在使用Activity响应主题更改时遇到问题(即Theme_Dark更改为Theme_Light)。
在Activity中,下面的代码工作正常,创建Activity时主题被更改(方法getPreferenceTheme()只获取通过PreferenceActivity设置的主题首选项值。)
protected void onCreate(Bundle savedInstanceState) {
setTheme(getPreferenceTheme());
super.onCreate(savedInstanceState);
setContentView(R.layout.controls);
}
但我怎样才能动态更改主题?因此,在我更改PreferenceActivity中的主题并返回主Activity后,如何才能更改它?
我知道我可以重新启动Activity来执行此操作(再次调用onCreate()),但我不想这样做并且听说可以“重新充气视图层次结构” onResume() - 我该怎么做?
我尝试了以下(在黑暗中刺伤),但没有任何快乐。
protected void onResume() {
super.onResume();
LayoutInflater inflater = LayoutInflater.from (this);
View v = inflater.inflate (R.layout.controls, null);
setTheme(getPreferenceTheme());
setContentView(v);
}
任何帮助非常感谢, 微米。
答案 0 :(得分:0)
尝试“重新创建”活动方法。
http://developer.android.com/reference/android/app/Activity.html#recreate()
在设置新主题后调用它。