Android 语言环境问题

Android Locale Issues

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

我有两个带有标签 "English" 和 "Hindi"

的按钮

当点击印地语时,它以印地语显示,但当我点击英语时,文本不会再次变回英语。

以下是我使用的代码

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);
}

我缺少什么?

谢谢。

这不是给你效果运行时。您需要使用 hi.

语言重新开始您的 activity

简单的解决方法

  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();
    }