0

Android 言語には使用したいすべての言語がないため、アプリでアプリの言語を変更したいと考えています。だから私はこれを変更しました:

String languageToLoad  = "en";  
Locale locale = new Locale(languageToLoad);   
Locale.setDefault(locale);  
Configuration config = new Configuration();  
config.locale = locale;  
getBaseContext().getResources().updateConfiguration(config,   
getBaseContext().getResources().getDisplayMetrics());  

ただし、ユーザーがアプリを開いて変更すると。その時点で表示されている文字列は、新しい言語Activityが作成されたときに変更される古い言語のままです。

選択したユーザー言語を何らかの形で保存し、アプリの起動時に言語を変更する必要があるというその他の問題。

では、これを改善するにはどうすればよいでしょうか。ユーザーが言語を選択すると、すべての文字列が選択言語strings.xmlから取得され、どの言語ユーザーが選択されたかを保存する方法が必要ですか?

4

2 に答える 2

0

public class Share次のような静的メンバーを使用してパブリッククラス()を作成できます。プロジェクト全体と同じようにpublic static String language = "en";コードを使用して、このクラスのフィールドに簡単にアクセスできます。Share.language言語を変更したい場合は、を設定できますShare.language = "fa";。選択した言語でアクティビティをリロードするには、アクティビティの前に次のコードを配置する必要がありますsuper.onCreate(saveInstanceState);

Locale l = new Locale(Shares.language);
Locale.setDefault(l);
Configuration config = new Configuration();
config.locale = l;
context.getApplicationContext().getResources()
        .updateConfiguration(config, null);

values-language自分のフォルダのようなフォルダがある場合は、言語を設定できますのでご注意ください/res

頑張って、ホセイン:)

于 2012-05-25T09:21:35.050 に答える
0

SharedPreference を使用して、ユーザーの言語を保存できます。これに関するドキュメントは次のとおりです。http://developer.android.com/reference/android/content/SharedPreferences.html

アクティビティをリロードする必要性については、ここでいくつかの回答を見つけることができます: Android: locale(system Language) change effect my application layouts

于 2012-05-25T09:12:55.497 に答える