我所拥有的是一项设置活动,我通过微调器选择语言。当我将其更改为俄语时,语言会发生变化,但是当我再次打开“设置”菜单时,微调器上的所选项目是第一项(英语)而不是当前项目(俄语)。
这是我的微调器
Resources res = getResources();
language = res.getStringArray(R.array.languages_arrays);
Spinner spinner = (Spinner) findViewById(R.id.toolbar_spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this, R.layout.spinner_item_dropdown,
language);
spinner.setAdapter(adapter);
我需要在微调器中更改以显示所选语言?
答案 0 :(得分:1)
如果要设置微调器的上一个选定项目,则必须存储所选项目,然后设置选择: 这是一个例子,希望我能够获得我之前选择的项目,然后从他的阵列适配器中获取该项目的位置
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String language = preferences.getString("language", "");
if(!language.equalsIgnoreCase(""))
{
int spinnerPosition = arrayAdapter.getPosition(language);
spinner.setSelection(spinnerPosition);
}
您可以按如下方式存储数据:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
SharedPreferences.Editor editor = preferences.edit();
editor.putString("language",spinner.getSelectedItem().toString(););
editor.apply();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
答案 1 :(得分:0)
为此你需要以编程方式设置微调器值
for (int i=0 ;i<languages.length;i++)
{
if(languages[i] = "RUSSIAN")//change it according to ur prrefence
spinner.setSelection(i);
}
答案 2 :(得分:0)
您必须在应用中的某处保存以前选定的值。再次打开设置时,检查该值并在数组中查找它的位置。一旦找到它的位置,就将Spinner选择设置到该位置,如下所示:
spinner.setSelection(position_of_selected_item);