0

アプリケーションに問題があります。ユーザーに言語を変更するオプションを提供しています。次のコードを使用すると、うまく機能します。

public void jezik_slo(View view)
{
     Locale locale = new Locale("SI_sl");
     Locale.setDefault(locale);
     Configuration config = new Configuration();
     config.locale = locale;
     this.getApplicationContext().getResources().updateConfiguration(config, null);
}

public void jezik_ang(View view)
{
     Locale locale = new Locale("en_US");
     Locale.setDefault(locale);
     Configuration config = new Configuration();
     config.locale = locale;
     this.getApplicationContext().getResources().updateConfiguration(config, null);
}

電話をロックする場合、または電話がスリープ状態になってから復帰する場合を除いて、すべて問題ありません。その時点で、アプリケーションは DEFAULT 文字列値 (Values -EN) を使用します。これを解決するにはどうすればよいですか?

4

1 に答える 1

0

2 つの要素: - メソッドに "View view" パラメータがある理由 - 選択した言語を保存したい場合は、どこかに保存できます。「SharedPreference」のように:

保存方法を追加:

private static final String BASE_LANGUAGE = "base", KEY_LANGUAGE = "lang";

private void saveLanguage(String lang) {
SharedPreferences sp = this.getSharedPreferences(BASE_LANGUAGE, Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putString(KEY_LANGUAGE, lang);
editor.commit();
}

get メソッドを追加します。

private String getLanguage() {
SharedPreferences sp = this.getSharedPreferences(BASE_LANGUAGE, Context.MODE_PRIVATE);
return sp.getString(KEY_LANGUAGE, "en_US"); //en_US is default language
}

コードの重複を削除

public void jezik(String lang)
{
     Locale locale = new Locale(lang);
     Locale.setDefault(locale);
     Configuration config = new Configuration();
     config.locale = locale;
     this.getApplicationContext().getResources().updateConfiguration(config, null);
     saveLanguage(lang);
}

「onCreate」メソッドで言語をロードするには、これを試してください:

jezik(getLanguage());

このコードでは、「これ」はアクティビティまたはコンテキストです。私の英語で申し訳ありませんが、これがあなたの望むものであることを願っています

于 2013-02-20T23:57:49.923 に答える