Ich habe eine Methode, die über das Einstellungsmenü ausgeführt wird, um die verschiedenen Sprachen auszuwählen. Ich möchte dies in einer SharedPreferences-Datei speichern, aber ich bekomme ständig Fehler ohne Erklärung. Wenn ich auf OK klicke, wird die App normal fortgesetzt, aber die ausgewählten Sprachen werden nicht gespeichert.Gespeicherte Einstellungen speichern unter Einstellungen
Die Methode:
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);
}
Bitte unterstützen. Danke
Veröffentlichen Sie das Fehlerprotokoll. – fluffyBatman
Übrigens, vergleichen Sie Strings nicht mit == oder =! operator.Verwenden Sie die Methode .equals(): if (langSet! = "") sollte if sein (! langSet.equals ("")) –