DataBinding可以干扰本地化活动吗?

时间:2017-04-21 22:09:54

标签: android android-activity data-binding android-location android-databinding

TL; DR

我有一个支持多种语言的应用。尽管使用了所有常用的本地化方法,但仍未翻译一项活动。它是应用中唯一充分利用DataBinding的活动。

完整解释

我有Activity使用DataBinding。所以基本上,该Activity的整个XML布局都包含在<layout>标记内。这就是我给视图充气并获得绑定的方法:

SomeActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.some_activity);

TextViews中有多个XML以这种方式设置了文字:

... android:text="@string/<name of a string>" ...

我们为用户提供预定义的语言选项,并使用

设置应用区域设置

Locale.setDefault(new Locale("<language name>"));

在英语语言环境中,一切都很完美。

当应用程序处于不同的语言环境时,相关活动中的字符串仍然以英语显示 - 即使这些字符串已被翻译为相应的语言,并且位于相同的字符串文件中,其余的app从中获取字符串。在该活动开始之前,应用程序很好 - 在活动开始后我退出它,应用程序将恢复到英语语言环境,直到它被杀死并重新启动。如果从未打开该活动,则应用程序将按预期运行。

有谁知道可能导致这种情况的原因是什么?感谢。

1 个答案:

答案 0 :(得分:-2)

Figured out what was happening. It has nothing to do with ViewBinding. That activity starts in the landscape mode - which resets the app locale for some reason. This answer helped me fix it.