gpt4 book ai didi

java - 在 Android 中使用微调器更改应用程序语言

转载 作者:太空宇宙 更新时间:2023-11-04 11:49:37 24 4
gpt4 key购买 nike

我可以将我的应用程序更改为波斯语,但每当我关闭应用程序并重新打开它时,它都会恢复为默认英语。我面临的另一个问题是,当我将语言改回英语时,它没有改变!当我更改语言后,当我单击“返回”时,它又恢复为英语。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
Configuration config = getBaseContext().getResources().getConfiguration();

final String lang = settings.getString("LANG", "");
if (!"".equals(lang) && !config.locale.getLanguage().equals(lang)) {
Locale locale = new Locale(lang);
Locale.setDefault(locale);
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources()
.getDisplayMetrics());
}

Spinner spinner = (Spinner) findViewById(R.id.spinner1);
spinner.setPrompt("select language");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, languages);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2 ,long arg3 ) {
Configuration config = new Configuration();
Locale locale;
switch (arg2) {
case 0:
config.locale = Locale.ENGLISH;
break;
case 1:
PreferenceManager.getDefaultSharedPreferences(getApplicationContext())
.edit().putString("LANG", "fa").apply();
config.locale = new Locale("fa");
startActivity(new Intent(getBaseContext(), MainActivity.class));
finish();
break;
}
getResources().updateConfiguration(config, null);
}

public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
private String[] languages = { "English","فارسی" };
}

最佳答案

您可以尝试以下代码:

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);


SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
settings = PreferenceManager.getDefaultSharedPreferences(this);
if(settings.contains("LANG"))
{
if (settings.getString("LANG", "").equals("fa"))
{
String languageToLoad = "fa";
Locale locale = new Locale(languageToLoad);
//Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(
config, getBaseContext().getResources().getDisplayMetrics());
}
else
{
String languageToLoad = "en";
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(
config, getBaseContext().getResources().getDisplayMetrics());
}
}


Spinner spinner = (Spinner) findViewById(R.id.spinner1);
spinner.setPrompt("select language");


ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, languages);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{


public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2 ,long arg3 )
{
switch (arg2)
{
case 0:
settings.edit().putString("LANG", "en").apply();
startActivity(new Intent(getBaseContext(), MainActivity.class));
finish();

break;

case 1:
settings.edit().putString("LANG", "fa").apply();
startActivity(new Intent(getBaseContext(), MainActivity.class));
finish();

break;

}

}
}

关于java - 在 Android 中使用微调器更改应用程序语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41979060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com