要实现在spinner的onItemSelected适配器中使语言更改变得永久,需要使用SharedPreferences。SharedPreferences提供了一种持久化存储的方式,允许我们存储小量的键值对数据。
以下是一个示例,演示了如何在OnItemSelectedListener中使用SharedPreferences进行永久性语言更改:
public class MainActivity extends Activity implements OnItemSelectedListener {
Spinner spinner;
String[] language = { "English", "French", "Hindi", "Japanese", "Chinese" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, language);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
// 代码以显示上次选择的语言
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
int lang = prefs.getInt("Language", 0);
spinner.setSelection(lang);
}
@Override
public void onItemSelected(AdapterView> parent, View view, int position, long id) {
// 在这里保存选定的语言位置
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("Language", position);
editor.apply();
// 根据选定的语言设置当前语言
switch (position) {
case 0:
// 将语言更改为英语
break;
case 1:
// 将语言更改为法语
break;
case 2:
// 将语言更改为印地语
break;
case 3:
// 将语言更改为日语
break;
case 4:
// 将语言更改为中文
break;
}
}
@Override
public void onNothingSelected(AdapterView> parent) {
// 未选定任何值
}
}