我必须根据一个片段的语言更改来刷新片段内容。所以我想到了在我的Main活动中使用onConfigurationChange方法(此活动控制所有片段),并在更改语言环境时重新创建所有片段。但是不会在更改语言环境时调用此方法。
我已在清单文件的活动标签下添加了语言环境。 onConfigurationChange在方向更改时被调用。
我正在更改此链接Change language programmatically in Android中给出的语言及其工作。
有人可以说明要解决此问题需要进行哪些更改。
对于遇到此问题的其他人,OP是正确的,但还不清楚。您必须定义android:configChanges="layoutDirection|locale"
才能调用onConfigurationChanged()
。我认为这是必要的,因为语言环境更改可能还会影响布局方向(对于RTL语言),因此仅声明语言环境可能还不够,但这只是我对此的假设。
您可以从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;
}
清单中的用户layoutDirection
属性