14

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

我在清单文件的活动标签下包含了语言环境。onConfigurationChange 在改变方向时被调用。

我正在更改此链接中给出的语言 在 Android 中以编程方式更改语言及其工作。

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

4

3 回答 3

20

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

于 2014-12-25T15:47:44.177 回答
0

layoutDirection在清单文件中使用属性。

于 2014-07-25T17:26:29.147 回答
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;
    }
于 2015-02-22T00:35:20.453 回答