Я добавляю несколько языков в моем приложении для Android.Всякий раз, когда я меняю язык, он меняется хорошо.Но после повторного открытия приложения снова отображается экран выбора языка.Я хочу сохранить последний выбранный язык, поэтому в следующий раз, когда пользователь снова откроет приложение, оно не должно отображать экран выбора языка, оно должно сразу перейти на следующую страницу и отобразить элементы на языке, который был выбран последним.Что делать?Любые решения?Пожалуйста, проверьте код ниже.В этом коде, где я должен хранить в SharedPreferences и где я должен получить разделяемое предпочтение
public class lang extends AppCompatActivity {
Spinner spinner;
Locale myLocale;
String currentLanguage = "en", currentLang;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lang);
currentLanguage = getIntent().getStringExtra(currentLang);
spinner = (Spinner) findViewById(R.id.spinner);
List<String> list = new ArrayList<String>();
list.add("Select language");
list.add("English");
list.add("Español");
list.add("Français");
list.add("Hindi");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
switch (position) {
case 0:
break;
case 1:
setLocale("en");
break;
case 2:
setLocale("es");
break;
case 3:
setLocale("fr");
break;
case 4:
setLocale("hi");
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
public void setLocale(String localeName) {
if (!localeName.equals(currentLanguage)) {
myLocale = new Locale(localeName);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
Intent refresh = new Intent(this, MainActivity.class);
refresh.putExtra(currentLang, localeName);
startActivity(refresh);
} else {
Toast.makeText(lang.this, "Language already selected!", Toast.LENGTH_SHORT).show();
}
}
public void onBackPressed() {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
System.exit(0);
}
}