Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改默认区域设置语言android_Java_Android_Localization_Locale - Fatal编程技术网

Java 更改默认区域设置语言android

Java 更改默认区域设置语言android,java,android,localization,locale,Java,Android,Localization,Locale,我制作了两个不同的strings.xml,一个用于瑞典语,一个用于英语 更改区域设置的代码 public void setLocale(String lang) { Locale myLocale = new Locale(lang); Resources res = getResources(); DisplayMetrics dm = res.getDisplayMetrics(); Configuration conf = res.getConfigura

我制作了两个不同的strings.xml,一个用于瑞典语,一个用于英语

更改区域设置的代码

 public void setLocale(String lang) {
    Locale myLocale = new Locale(lang);
    Resources res = getResources();
    DisplayMetrics dm = res.getDisplayMetrics();
    Configuration conf = res.getConfiguration();
    conf.locale = myLocale;
    res.updateConfiguration(conf, dm);
    Intent refresh = new Intent(getContext(), BaseActivity.class);
    startActivity(refresh);
}
swedish.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setLocale("sv");
        }
    });
    english.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setLocale("en");
        }
    });
单击用于切换语言的侦听器

 public void setLocale(String lang) {
    Locale myLocale = new Locale(lang);
    Resources res = getResources();
    DisplayMetrics dm = res.getDisplayMetrics();
    Configuration conf = res.getConfiguration();
    conf.locale = myLocale;
    res.updateConfiguration(conf, dm);
    Intent refresh = new Intent(getContext(), BaseActivity.class);
    startActivity(refresh);
}
swedish.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setLocale("sv");
        }
    });
    english.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setLocale("en");
        }
    });
问题是,这个应用程序是自己在瑞典语上启动的,据我所知,瑞典语并不是我自己设置的。当应用程序启动时,如何更改默认区域设置

问题

  • 如何设置应用程序以使用英语xml开始
  • 有人知道如何存储用户的选择吗?如果用户关闭应用程序时按下使用瑞典语键,我希望将其存储

  • 当用户按下“语言选择”键时,将该值存储到prefrence中,一旦您再次返回,则prefrence中已经存储了一个值。现在只需调用如下方法:-
    setLocale_forstartup(“en”)

    公共语言(){ 试一试{

            Resources res = mContext.getResources();
            // Change locale settings in the app.
            DisplayMetrics dm = res.getDisplayMetrics();
            android.content.res.Configuration conf = res.getConfiguration();
            conf.locale = new Locale("en");
            // conf.locale = new Locale("en");
            res.updateConfiguration(conf, dm);
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
    }
    

    它只适用于某些语言。

    我发现当我使用android studio的翻译编辑器时,添加了一个区域设置,例如波斯语(fa),而不是
    values fa
    android studio添加
    values fa rIR
    ,所以当我们要求
    locale(“fa”)
    时,它不会起作用。因此,如果它不起作用,请转到
    项目视图
    并重命名您的文件夹(在我的例子中,
    res/values fa rIR
    res/values fa

    以及
    setContentView()


    祝你好运

    你为它创建了两个不同的值文件夹吗?
    values sw
    values en
    并将不同的
    strings.xml
    文件放入其中。@Piyush我在values文件夹中有两个不同的strings.xml。我读了一些关于两个不同值文件夹的内容,但我认为只需要添加两个不同的str就可以了因为这是我想要的唯一更改。不,它不能工作。你必须创建两个不同的值文件夹。@Piyush好的,这就是为什么我不能设置默认语言的原因?因为它可以在单击按钮时更改它,但我每次打开应用程序时都必须更改它。是的,正因为如此