0

国際化を使用する Android アプリを開発しています。だから私は私のソリューションに値言語(例えば、値-EN、値-BR)のフォルダを持っています。国際化はうまくいっています。

問題は、それを方向要素と組み合わせるときです。

また、横向き用の xml ファイルと縦向き用の xml ファイルがあります。フォルダーのレイアウト方向 (レイアウトポートなど) があります。オリエンテーションも順調です。これを実現するには、次のメソッドをオーバーライドします。

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    setContentView(R.layout.main);
}

しかし、文字列値 (ラベル) に問題があります。向きを変更すると、すべての文字列値がデータを失い、ID として表示されます。たとえば、「SAVE」というラベルの付いたボタンがあります。電話を回転させると、ボタンのラベルがリソースの番号である「@23232324」に変わります。

私に何ができる?持っている言語ごとに、縦向きと横向きのフォルダーを作成しようとしましたが、機能しませんでした (values-br-port、values-br-land など)。

仕事、オリエンテーション、国際化の両方を維持する必要があります。方向と異なる言語に基づいて、2 つの異なるレイアウトが必要です。

4

1 に答える 1

0

ところで、私はそれを解決しました!!

問題は、ビューをリロードする前に setLocale メソッドを呼び出さなかったことです。だから私はしなければならなかった、

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    setLocale();
    setContentView(R.layout.main);
}

メソッド setLocale:

public void setLocale(){
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config,
    getBaseContext().getResources().getDisplayMetrics());
}
于 2012-06-14T15:12:54.553 に答える