【发布时间】:2021-10-03 16:17:08
【问题描述】:
我是 android 编程新手,我想做以下事情: 我有一个微调器,可以让你改变语言。我已经设置了它并且效果很好。然而问题是它不记得选择的语言(在微调器中)。因此,如果您要关闭应用程序并重新启动它,它将恢复到微调器上的第一个项目,即英文。 我想改变这个功能,一旦你选择了一个项目,它就会记住它。
我已经设置了一个共享偏好,它会记住选择了哪种语言。但是,我不能让共享偏好成为主导,从那时起我就永远无法更改选择的语言,如果我让选择的语言成为主导,那么即使在选择的语言实际上应该遵循的开始时,偏好也将始终遵循选择的语言偏好。这是我现在拥有的代码。我希望任何人都可以帮助我,因为我已经为此绞尽脑汁了一段时间
pref_language = pref.getString("language", "en");
//pref_language_begin = pref.getBoolean("language_begin", false);
final Spinner spinner_languages = (Spinner) findViewById(R.id.spinner_languages);
spinner_languages.setAdapter(new CustomSpinnerAdapter(MainActivity.this, R.layout.customspinneritem, languages, language_flags));
spinner_languages.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
parent.getItemAtPosition(position);
language_chosen = (String) parent.getItemAtPosition(position);
if (!pref_language.equals(language_chosen)) {
SetLocale(language_chosen);
pref_language = language_chosen;
edit.putString("language", pref_language);
//edit.putBoolean("language_begin", true);
edit.apply();
recreate();
}
else{
}
}
customspinneradapter 只是让我为它选择一种语言和一个标志。 我想我可能需要第二个偏好,但我不知道如何实现它。启动时的主要语言应该是首选,但在微调器中选择一种语言后应该是选择的语言。我正在考虑使用 onclick 侦听器,但我不确定是否应该使用微调器。
肯定有更简单的方法,我只是想不通。 希望大家帮帮我!
【问题讨论】: