Android - 如何重新膨胀View层次结构

时间:2011-05-12 10:35:53

标签: android view inflate

我在使用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);
}

任何帮助非常感谢, 微米。

1 个答案:

答案 0 :(得分:0)

尝试“重新创建”活动方法。

http://developer.android.com/reference/android/app/Activity.html#recreate()

在设置新主题后调用它。