8

TL; DRDataBinding是否会干扰本地化活动?

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

充分说明

我有一个使用DataBindingActivity。所以基本上,该活动的整个XML布局都包含在<layout>标记中。这是我吹的观点,并获得绑定:

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

有一个在XML一些TextViews这样有文字设置:

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

我们提供用户与预定义的语言选项并设置应用场所使用

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

在英文区域设置中,一切正常。

当应用程序处于不同的区域设置思想时,有问题的活动中的字符串仍然以英语显示 - 即使这些字符串已被转换为相应的语言,并且位于相同的字符串文件中,其余部分该应用从中抓取字符串。在该活动开始之前,应用程序没问题 - 活动开始后我退出,应用程序恢复为英语区域设置,直到它被杀死并重新启动。如果该活动从未打开过,则应用按预期行事。

有没有人有任何想法可能会导致此?谢谢。

+1

我的理解是,应用程序将从设备中检索区域设置,不需要以编程方式干扰它。 所以我的猜测是你将Locale.setDefault(...)搞乱了,但我可能错了。 – FWeigl

+0

@Ascorbin无论设备的区域设置如何,我们仍然希望为用户提供一个选择,让他们选择喜欢的语言,只要我们支持它。请注意,该应用程序的其余部分工作正常。 – C0D3LIC1OU5

+0

如果不使用数据绑定语法,则使用应用资源的常规规则。您是否正在重复使用SomeActivityBinding,或者在更改区域设置时重新设置它,就像您通常那样? –

回答

-2

找出发生了什么。它与ViewBinding无关。该活动以横向模式启动 - 出于某种原因重置应用程序区域设置。 This answer帮我修好了。