更改语言环境后未调用onConfigurationChange

时间:2013-09-10 17:33:36

标签: android configuration android-fragments locale

我必须从一个片段刷新语言更改时的片段内容。所以我想到使用onConfigurationChange方法,它在我的Main活动中(此活动控制所有片段)并在更改语言环境时重新创建所有片段。但是在更改区域设置时不会调用此方法。

我在清单文件的activity标记下包含了locale。在改变方向时调用onConfigurationChange。

我正在更改此链接Change language programmatically in Android及其工作中的语言。

有人可以澄清解决此问题需要做出哪些更改。

3 个答案:

答案 0 :(得分:16)

对于遇到此问题的其他人来说OP是对的,但有点不清楚 您必须定义android:configChanges="layoutDirection|locale"才能调用onConfigurationChanged()
我认为这是必要的,因为区域设置更改也可能会影响布局方向(对于RTL语言),因此声明区域设置可能还不够,但这只是我对这个问题的假设。

答案 1 :(得分:0)

清单

中的用户layoutDirection属性

答案 2 :(得分:0)

您可以从Application扩展并在清单中设置它。 然后,在那里放置onConfigurationChanged,并检查先前的语言环境是否与当前语言环境相同:

if(!_currentLocale.equals(newConfig.locale))
  {
  _currentLocale=newConfig.locale;
  // locale has changed
  }

" _currentLocale"变量应该在新类的onCreate方法(扩展Application)上初始化,如下:

  @Override
  public void onCreate()
    {
    super.onCreate();
    _currentLocale=getResources().getConfiguration().locale;
    }