2012-04-30 7 views
3
アンドロイド

でロケールを変更した後、私は私のAndroidアプリでロケールを変更したいので、私は次のコードを使用:リロードビュー

Locale locale = new Locale('fr'); // or whatever 
Locale.setDefault(locale); 
Configuration config = new Configuration(); 
config.locale = locale; 

getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); 

をしかし、問題は何も私の意見では変化しないということです。ロケールの変更を表示するには、それらを再ロードする必要がありますか?

編集:すべてのビューが影響を受けます:ボタン、テキストビュー、チェックボックス。もちろん、手動でビューのテキストを設定すると動作しますが、すべてのウィジェットでsetText()を呼びたくありません...ユーザー名がビューに表示され、ログオフ後に更新されていないため/別のユーザーとログオンします。だから私は手動でテキストビューを更新したが、問題がロケールの変更時にすべてのビューで同じであることが判明した後。

+0

まず、あなたが使用している文字列の翻訳をしていますか? – pandre

+0

もちろん、私はen、frとnlをフォルダvalues-en、values-fr、values-nlに持っています – Alexis

+0

影響を受けるビューのタイプを教えてください。 TextView、EditText、CheckBoxですか? – pandre

答えて

0

あなたがロケールを変更するときにあなたがいる「Activity」を「リロードする」方法を尋ねていると思います。

私が知る限り、Viewを再レイアウト/再作成するか、テキストを再設定する必要があります。しかし、より良い解決策が見つかった場合は、それを共有してください。

+0

最後に、ロケールの変更後にすべてのビューが再読み込みされるように、アプリを近くにしました。 – Alexis

+0

@jafarどのようにあなたのアプリケーションを再起動すると、あなたの問題を解決します。以前の状態が紛失する可能性のあるタブ付きアプリを考えてみましょう。 – vrs

+0

@jafarこの問題の解決方法を教えてください。返信してください。 –

0

私はこれに対する解決策を見つけて共有したいと思います。
マニフェスト

android:configChanges="locale" 

にこれを追加し、(onConfigurationChangedをオーバーライドする)あなたの活動に

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    // refresh your views here 
    super.onConfigurationChanged(newConfig); 
} 

は、より多くの情報のためhereを行きます。 お手伝いをしてください。 :)