onConfigurationChange更改语言环境后未调用

问题描述 投票:12回答:3

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

我已在清单文件的活动标签下添加了语言环境。 onConfigurationChange在方向更改时被调用。

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

有人可以说明要解决此问题需要进行哪些更改。

android configuration android-fragments locale
3个回答
17
投票

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


0
投票

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

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

“ _ currentLocale”变量应在新类(扩展应用程序)的onCreate方法上初始化,例如:

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

0
投票

清单中的用户layoutDirection属性

© www.soinside.com 2019 - 2024. All rights reserved.