要在Android应用程序中在运行时更改语言,可以使用以下步骤:
LanguageHelper
帮助类,用于处理语言更改的逻辑。public class LanguageHelper {
private static final String PREFERENCE_KEY_LANGUAGE = "language";
private static final String LANGUAGE_ENGLISH = "en";
private static final String LANGUAGE_SPANISH = "es";
public static void changeLanguage(Context context, String languageCode) {
// 保存所选语言到SharedPreferences
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(PREFERENCE_KEY_LANGUAGE, languageCode);
editor.apply();
// 应用语言更改
Locale locale = new Locale(languageCode);
Locale.setDefault(locale);
Configuration configuration = new Configuration();
configuration.locale = locale;
Resources resources = context.getResources();
resources.updateConfiguration(configuration, resources.getDisplayMetrics());
}
public static String getCurrentLanguage(Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getString(PREFERENCE_KEY_LANGUAGE, LANGUAGE_ENGLISH);
}
}
onCreate
方法中调用LanguageHelper
类的changeLanguage
方法来更改应用程序的语言。@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 获取当前语言
String currentLanguage = LanguageHelper.getCurrentLanguage(this);
// 更改为另一种语言
if (currentLanguage.equals(LanguageHelper.LANGUAGE_ENGLISH)) {
LanguageHelper.changeLanguage(this, LanguageHelper.LANGUAGE_SPANISH);
} else {
LanguageHelper.changeLanguage(this, LanguageHelper.LANGUAGE_ENGLISH);
}
setContentView(R.layout.activity_main);
// 其他初始化代码...
}
AndroidManifest.xml
文件中为MainActivity
添加android:configChanges
属性,以便应用程序在更改语言时不会重新创建MainActivity
。
通过以上步骤,您可以在运行时更改Android应用程序的语言。请注意,这只会更改应用程序的语言,而不会更改设备的系统语言。