在仍然使用Android资源的情况下,是否可以通过编程方式更改应用程序的语言?

如果没有,是否可以以特定语言请求资源?

我想让用户改变应用程序的语言从应用程序。

六个六六个六提问于
你想要的cccJava/Python/IOS爱好者,骑行+跑步。。。哦,对了,还养了两只猫。回答于

如果你想改变你的应用程序的语言,你必须做两件事。

首先,创建一个基本活动并使你的所有活动都从以下内容扩展:

public class BaseActivity extends AppCompatActivity {

    private Locale mCurrentLocale;

    @Override
    protected void onStart() {
        super.onStart();

        mCurrentLocale = getResources().getConfiguration().locale;
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Locale locale = getLocale(this);

        if (!locale.equals(mCurrentLocale)) {

            mCurrentLocale = locale;
            recreate();
        }
    }

    public static Locale getLocale(Context context){
        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);

        String lang = sharedPreferences.getString("language", "en");
        switch (lang) {
            case "English":
                lang = "en";
                break;
            case "Spanish":
                lang = "es";
                break;
        }
        return new Locale(lang);
    }
}

请注意,我将新语言保存在sharedPreference中。

其次,创建一个应用程序的扩展,如下所示:

    public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        setLocale();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        setLocale();
    }

    private void setLocale() {

        final Resources resources = getResources();
        final Configuration configuration = resources.getConfiguration();
        final Locale locale = getLocale(this);
        if (!configuration.locale.equals(locale)) {
            configuration.setLocale(locale);
            resources.updateConfiguration(configuration, null);
        }
    }
}

getLocale()与上面相同。

回答过的其他问题

人工智能是否可以架构在区块链上?

你想要的cccJava/Python/IOS爱好者,骑行+跑步。。。哦,对了,还养了两只猫。
说到人工智能,就不能回避大数据。机器学习方法依托于大量的数据来完成验证和训练,而当下的数据全都别掌握在大公司手中,不能为个人随意支配,数据市场尚未成型。区块链的几大主要特征,如:分布式节点的共识系统、信息的不可篡改、匿名化、去中心化。 区块链还有一种非常神奇的计算方法叫零知识证明...... 展开详请

物联网与工业互联网有什么区别?

你想要的cccJava/Python/IOS爱好者,骑行+跑步。。。哦,对了,还养了两只猫。
要知道他们的区别是什么,就要先知道他们是什么? 工业互联网,英文简称IIoT,而物联网是IOT,其实单从英文简称来看,就可以大概知道他们的联系,工业物联网网是物联网更大的概念,从编程方向来理解就是物联网是工业物联网的父级,而工业物联网就是继承了物联网的特性,并且拥有自己的属性,而...... 展开详请

如何快速入门Kafka消息队列?

你想要的cccJava/Python/IOS爱好者,骑行+跑步。。。哦,对了,还养了两只猫。
来点干货~Kafka 的详细设计及其生态系统 Apache Kafka 的核心要素有中介者,订阅主题,日志,分区还有集群,还包括像 MirrorMaker 这样的有关工具。 Kafka 生态系统由 Kafka Core,Kafka Streams,Kafka Connect,Ka...... 展开详请

我什么都不会呀,看不懂怎么办呀?

你想要的cccJava/Python/IOS爱好者,骑行+跑步。。。哦,对了,还养了两只猫。
任何事情都可以按照正常的学习流程,正常的方法。 但是你问我了,我可以说无可奉告。 但是你总想搞个大新闻的,说腾讯云不给你解决问题然后把我批判一番。 我讲的意思是,要好好学习,不会了再来问,你这直接是伸手要了,我能有什么办法? 你啊,非常熟悉伸手党那套理论,然而……... 展开详请

yum install php-pdo 失败?

你想要的cccJava/Python/IOS爱好者,骑行+跑步。。。哦,对了,还养了两只猫。
你试试用下面的方法解决试试。 yum clean all rpm --rebuilddb yum update 如果不行就尝试更换yum源 cd /etc/yum.repos.d mv CentOS-Base.repo CentOS-Base.repo.bk wget http:...... 展开详请

腾讯云香港主机搭建网站需要备案吗?

你想要的cccJava/Python/IOS爱好者,骑行+跑步。。。哦,对了,还养了两只猫。

当然是不用啦~

如果是域名在国内托管的话(如腾讯云、阿里云等)是需要给域名备案的。

你服务器在香港,是暂时不需要备案的。

关于作者

你想要的ccc

Java/Python/IOS爱好者,骑行+跑步。...

所属标签

扫码关注云+社区