8

TL; DRDataBindingはアクティビティのローカライズを妨害できますか?

私はいくつかの言語をサポートするアプリを持っています。 1つのアクティビティは、すべての通常のローカリゼーション方法を使用していても翻訳されていません。これは、DataBindingを完全に利用するアプリ内の唯一のアクティビティです。

詳しい説明

私はDataBindingを使用していますActivity持っています。したがって、基本的には、そのアクティビティのXMLレイアウト全体が<layout>タグ内にラップされます。

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

私たちは、ユーザに提供します。テキストこのように設定しているXMLTextViewsの数があり

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

:これは私がビューを膨らませると結合するのを取得する方法でありますあらかじめ定義された言語オプションを使用してアプリのロケールを設定することができます。

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

英語のロケールでは、すべてが完全に機能します。

アプリが異なるロケールにあると考えられる場合、問題のアクティビティの文字列は、それらの文字列が適切な言語に翻訳されていても残りの文字列ファイルアプリは文字列を取得します。そのアクティビティが開始されるまで、アプリはうまくいきます。アクティビティが開始され、そのアクティビティが終了した後、アプリは強制終了されて再起動されるまで英語のロケールに戻ります。そのアクティビティが決して開かれない場合、アプリケーションは期待どおりに動作します。

これを引き起こしている原因は何ですか?ありがとう。

+1

私の理解では、アプリケーションがロケールをデバイスから取得し、プログラムでそれを妨害する必要はありません。 私はLocale.setDefault(...)を使ってこれを邪魔していると思いますが、間違っている可能性があります。 – FWeigl

+0

@Ascorbinでも、デバイスのロケールに関係なく、私たちはサポートしている限り、好きな言語でアプリを利用できるようにしたいと考えています。アプリケーションの残りの部分は正常に動作していることに注意してください。 – C0D3LIC1OU5

+0

データバインディング構文を使用していない場合は、リソースを適用するための通常のルールが使用されます。あなたはSomeActivityBindingを再利用していますか、通常どおりにロケールを変更すると再膨張しますか? –

答えて

-2

何が起きているのかが分かります。 ViewBindingとは何の関係もありません。そのアクティビティは、何らかの理由でアプリのロケールをリセットする横長モードで開始されます。 This answer私はそれを修正するのに役立ちました。

関連する問題