Java 当android应用程序关闭时,如何保持最后一种语言?

Java 当android应用程序关闭时,如何保持最后一种语言?,java,android,string,android-layout,Java,Android,String,Android Layout,我已经制作了一个android应用程序来改变语言。但当应用程序关闭并再次打开时,语言将恢复为默认语言。 当应用程序再次打开且语言是用户最后一次选择时,我如何确定 谢谢你的帮助,我真的很感激 您需要将用户选择的语言保存到共享首选项或任何其他持久性存储中,在下一次应用程序启动时检索先前选择的语言并将其应用于应用程序 当用户更改语言时,为了应用新语言,活动应完成并重新启动,否则需要调用活动的重新创建()方法 将上述类复制到代码中 在“活动”中,重写以下方法 @Override protec

我已经制作了一个android应用程序来改变语言。但当应用程序关闭并再次打开时,语言将恢复为默认语言。 当应用程序再次打开且语言是用户最后一次选择时,我如何确定


谢谢你的帮助,我真的很感激

您需要将用户选择的语言保存到共享首选项或任何其他持久性存储中,在下一次应用程序启动时检索先前选择的语言并将其应用于应用程序

当用户更改语言时,为了应用新语言,活动应完成并重新启动,否则需要调用活动的重新创建()方法

将上述类复制到代码中

在“活动”中,重写以下方法

 @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(LocaleHelper.onAttach(base));
    }
当用户更改语言时,例如单击按钮。使用下面的代码保存语言。这里en是英语的语言(iso)代码

@Override
    public void onClick(View v) {
     LocaleHelper.persist(context,"en");
     recreate();
}

默认情况下,应用程序的语言将回落到设备区域设置,因此每次重新启动应用程序时,语言都将更改

为了使应用程序的语言与用户的choosen首选项相同,您需要保留用户选择的语言。一种方法是将语言首选项存储在SharedReference中。启动应用程序时,请检查首选项中的值,以决定应使用哪种语言,然后相应地调整视图

你可以这样做

更改语言时,按如下方式存储值:

SharedReferences.Editor=GetSharedReferences(“MyPref”, 模式_PRIVATE).edit();编辑器.putString(“语言”、“en”); commit()

onCreate()
中按如下方式检索值:

覆盖onConfigurationChanged():

@覆盖
公共无效OnConfiguration已更改(最终配置newConfig){
super.onConfigurationChanged(newConfig);
setText();
//要更改的任何其他UI文本
}
或者,您可以调用
recreate()更改区域设置后。

这将确保您的区域设置正确更改。

但如何更改?除此之外,请添加相关代码。试试这个链接。这不是分享链接或几句话的正确方法。你的回答应该只是一个评论。旗子@我们不应该共享链接吗?我是新来的。谢谢您提供的信息。您可以在答案中添加来自可信/官方来源的链接,但如果问题与某些代码相关,则必须添加相关代码。@当然可以。多恩
SharedPreferences prefs = getSharedPreferences("MyPref", MODE_PRIVATE); 
String selectedLanguage = prefs.getString("language", "<enter default locale of app>");
setLocale(selectedLanguage);
private 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);
    getBaseContext().getResources().updateConfiguration(conf, getBaseContext().getResources().getDisplayMetrics());
    invalidateOptionsMenu();
    onConfigurationChanged(conf);//Add this line
}
@Override
public void onConfigurationChanged(final Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    textView.setText(<your-text>);
    //Any other UI text to change
}