android - 如何通过单击更改整个应用程序的语言?

标签 android android-studio android-activity android-spinner

我有一个 Spinner,在登录页面上可以选择三种语言。我希望当用户选择一种语言时假设“波斯语” 语言整个应用程序的语言应该改变。我只能更改当前 Activity 的语言。如何更改整个应用程序的语言。

最佳答案

在 Android 中以编程方式更改语言

以下是更改应用程序区域设置的适当方法:

要以编程方式更改语言,您必须克服一些困难。

1.)在配置更改期间关闭或重新创建后,您的应用程序将不记得您的语言更改

2.)您应该根据所选语言适本地更新当前可见的 UI

解决方案

LocaleHelper”是您所需要的全部解决方案。您只需在应用程序的主类上初始化语言环境。之后,您的所有语言更改都将持续存在。

在 Android API 版本 24 (Nougat) 最近发生变化后,我们需要覆盖 attachBaseContext 以反射(reflect)变化。

以下方法用于更改应用程序的语言:

private static boolean updateResources(Context context, String language) {
    Locale locale = new Locale(language);
    Locale.setDefault(locale);

    Resources resources = context.getResources();

    Configuration configuration = resources.getConfiguration();
    configuration.locale = locale;

    resources.updateConfiguration(configuration, resources.getDisplayMetrics());

    return true;
}

在下面的链接中找到更多详细信息:

Changing Android’s Locale Programmatically

关于android - 如何通过单击更改整个应用程序的语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43292013/

相关文章:

android - 使用 Otto 将数据从 Activity 传递到 Fragment

android - 如何打印异常Android的堆栈跟踪

android - Android Studio中 "(v) ->"是什么意思?

css - Ionic 默认 Activity 背景颜色

java - 单击新 Activity 内的微调器时强制关闭。

android - 如何向android studio 添加外部依赖项(jar 文件)?

android - onNext() onError() 回调不在第二次订阅 android 上执行

java - "invalid command-line parameter"尝试为 Android 制作一个 hello world 示例时出错

java - 重构后更改内容提供程序包

android - 在 Android Studio 中单独的 Mipmap 文件夹