Android区域设置问题

时间:2016-03-26 06:47:10

标签: android locale multilingual

我需要用英语和印地语显示文本,但默认情况下会以英文显示。

我有两个带标签的按钮"英文"和"印地语"

当点击印地语时,它会在印地语中显示,但是当我点击英语时,文字再也没有回到英语。

以下是我正在使用的代码

Button en_Button,hi_Button;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setLanguage("en");

    en_Button = (Button)findViewById(R.id.en_Button);
    hi_Button = (Button)findViewById(R.id.hi_Button);

    en_Button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setLanguage("en");
        }
    });

    hi_Button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setLanguage("hi");
        }
    });
}

public void setLanguage(String language)
{
    String languageToLoad  = language; // your language
    Locale locale = new Locale(languageToLoad);
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config,
            getBaseContext().getResources().getDisplayMetrics());
    this.setContentView(R.layout.activity_main);
}

我错过了什么?

感谢。

1 个答案:

答案 0 :(得分:0)

这不会影响运行时效果。您需要使用语言hi重新开始您的活动。

的简单解决方法
  1. 在sharedPreference中存储要更改的语言。
  2. 设置首选项后。 startActivity(getIntent());
  3. 现在每次加载“en”。而不是该负载值形成SharedPreferences

    public String getAppLanguage() {
        SharedPreferences pref; = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        return pref.getString(APP_LANG, "en");
    }
    
    public void setAppLanguage(String language) {
        SharedPreferences pref; = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        Editor editor = pref.edit();
        editor.putString(APP_LANG, language);
        editor.commit();
    }