如何从内部更改android应用程序的语言?

如何从内部更改android应用程序的语言?,android,xml,radio-button,locale,Android,Xml,Radio Button,Locale,我正在开发一个漫画应用程序。我有三个单选按钮,分别是英语、法语和西班牙语。当用户单击其中任何一个时,值es、值fr和值en中的strings.xml应该会更改所需引用的字符串,但我单击单选按钮时,它不会更改引用仍为英语,并且不会更改为法语或西班牙语。我不确定此答案是否会帮助您。但是,少量的代码将实际地改变语言环境。试试这个,如果效果很好,接受答案并+1:) 根据区域设置更改语言,如下所示: public class AndroidLocalize extends Activity { S

我正在开发一个漫画应用程序。我有三个单选按钮,分别是英语、法语和西班牙语。当用户单击其中任何一个时,值es、值fr和值en中的strings.xml应该会更改所需引用的字符串,但我单击单选按钮时,它不会更改引用仍为英语,并且不会更改为法语或西班牙语。我不确定此答案是否会帮助您。但是,少量的代码将实际地改变语言环境。试试这个,如果效果很好,接受答案并+1:)


根据区域设置更改语言,如下所示:

public class AndroidLocalize extends Activity {
    Spinner spinnerctrl;
    Button btn;
    Locale myLocale;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        spinnerctrl = (Spinner) findViewById(R.id.spinner1);
        spinnerctrl.setOnItemSelectedListener(new OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> parent, View view,
                    int pos, long id) {

                if (pos == 1) {

                    Toast.makeText(parent.getContext(),
                            "You have selected Es", Toast.LENGTH_SHORT)
                            .show();
                    setLocale("ta");
                } else if (pos == 2) {

                    Toast.makeText(parent.getContext(),
                            "You have selected Fr", Toast.LENGTH_SHORT)
                            .show();
                    setLocale("hi");
                } else if (pos == 3) {

                    Toast.makeText(parent.getContext(),
                            "You have selected En", Toast.LENGTH_SHORT)
                            .show();
                    setLocale("en");
                }

            }

            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub
            }

        });
    }

    public void setLocale(String lang) {

        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(this, AndroidLocalize.class);
        startActivity(refresh);
    }
}
public类AndroidLocalize扩展活动{
喷丝器喷丝器;
按钮btn;
本地语言;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
喷丝头Ctrl=(喷丝头)findViewById(R.id.spinner1);
spinnerctrl.setOnItemSelectedListener(新建OnItemSelectedListener()){
已选择公共视图(AdapterView父视图、视图、,
内部位置,长id){
如果(位置==1){
Toast.makeText(parent.getContext(),
“您选择了Es”,吐司。长度(短)
.show();
setLocale(“ta”);
}否则如果(位置==2){
Toast.makeText(parent.getContext(),
“您已选择Fr”,吐司长度(短)
.show();
setLocale(“hi”);
}否则如果(位置==3){
Toast.makeText(parent.getContext(),
“您选择了En”,吐司。长度(短)
.show();
设置语言环境(“en”);
}
}
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
});
}
公共void setLocale(字符串lang){
myLocale=新语言环境(lang);
Resources res=getResources();
DisplayMetrics dm=res.getDisplayMetrics();
Configuration=res.getConfiguration();
conf.locale=myLocale;
res.updateConfiguration(conf,dm);
意图刷新=新意图(这是AndroidLocalize.class);
星触觉(刷新);
}
}

之后,创建要更改的值文件夹。在您的例子中,strings.xml来自值es、值fr和值en。

我不明白。请您详细说明plz,我尝试了您所说的内容,但它不起作用。希望Harshit Rathi解释您真正需要的内容。与我以更短的方式发送给您的代码相同。是否需要在mainfest中添加权限?
public class AndroidLocalize extends Activity {
    Spinner spinnerctrl;
    Button btn;
    Locale myLocale;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        spinnerctrl = (Spinner) findViewById(R.id.spinner1);
        spinnerctrl.setOnItemSelectedListener(new OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> parent, View view,
                    int pos, long id) {

                if (pos == 1) {

                    Toast.makeText(parent.getContext(),
                            "You have selected Es", Toast.LENGTH_SHORT)
                            .show();
                    setLocale("ta");
                } else if (pos == 2) {

                    Toast.makeText(parent.getContext(),
                            "You have selected Fr", Toast.LENGTH_SHORT)
                            .show();
                    setLocale("hi");
                } else if (pos == 3) {

                    Toast.makeText(parent.getContext(),
                            "You have selected En", Toast.LENGTH_SHORT)
                            .show();
                    setLocale("en");
                }

            }

            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub
            }

        });
    }

    public void setLocale(String lang) {

        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(this, AndroidLocalize.class);
        startActivity(refresh);
    }
}