У меня есть метод, который запускается из меню настроек, чтобы выбрать разные языки. Я хочу сохранить это в файле SharedPreferences, но я постоянно получаю ошибки без объяснения причин. Если я нажму «ОК», приложение продолжит нормально, но оно не сохранит выбранные языки.Сохранение общих настроек из настроек
Метод:
static String langSet = "";
static SharedPreferences languageSettings;
static SharedPreferences.Editor editLang;
public static void updateResources(Context context, String language) {
Locale locale = new Locale(language);
Locale.setDefault(locale);
Resources resources = context.getResources();
Configuration configuration = resources.getConfiguration();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
configuration.setLocale(locale);
} else {
configuration.locale = locale;
}
resources.updateConfiguration(configuration, resources.getDisplayMetrics());
}
OnCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//LocaleHelper.onCreate(this, "es");
languageSettings = getSharedPreferences("languages", Context.MODE_PRIVATE);
editLang = languageSettings.edit();
if (langSet != ""){
langSet = languageSettings.getString("lang", "");
updateResources(this, langSet);
}
startButton = (Button) findViewById(R.id.startButton);
startButton.setOnClickListener(new AdapterView.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), Main2Activity.class);
//intent.putExtra("name", friends.get(i));
startActivity(intent);
}
});
}
onCreateOptionsMenu:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.english) { // IMPORT THE MENU.XML FOLDER
languageSettings = getSharedPreferences("languages", Context.MODE_PRIVATE);
editLang.putString("lang", "en");
editLang.apply();
langSet = languageSettings.getString("lang", "");
updateResources(this, langSet);
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
//intent.putExtra("name", friends.get(i));
startActivity(intent);
}
else if (id == R.id.afrikaans) {
languageSettings = getSharedPreferences("languages", Context.MODE_PRIVATE);
editLang.putString("lang", "af");
editLang.apply();
langSet = languageSettings.getString("lang", "");
updateResources(this, langSet);
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
//intent.putExtra("name", friends.get(i));
startActivity(intent);
}
else if (id == R.id.spanish) {
languageSettings = getSharedPreferences("languages", Context.MODE_PRIVATE);
editLang.putString("lang", "es");
editLang.apply();
langSet = languageSettings.getString("lang", "");
updateResources(this, langSet);
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
//intent.putExtra("name", friends.get(i));
startActivity(intent);
}
return super.onOptionsItemSelected(item);
}
Пожалуйста помогите. Thanks
Опубликовать журнал ошибок. – fluffyBatman
Кстати, не сравнивайте строки с == or =! operator.Используйте метод .equals(): if (langSet! = "") должен быть, если (! langSet.equals ("")) –