刷新后如何使微调器显示先前选择的项目?

How to make a spinner show previously selected item after refresh?

我有一个设置 activity,我可以在其中通过微调器选择语言。例如,当我将其更改为俄语时,语言会发生变化,但是当我再次打开“设置”菜单时,微调器上的所选项目是第一项(英语)而不是当前项目(俄语)。

这是我的微调器

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);

我需要在微调器中更改什么才能显示所选语言?

为此,您需要以编程方式设置微调器值

for (int i=0 ;i<languages.length;i++)
                {
                    if(languages[i] = "RUSSIAN")//change it according to ur prrefence
                   spinner.setSelection(i);
                }

您必须将之前选择的值保存在应用中的某个位置。当您再次打开设置时,检查该值并在数组中找到它的位置。找到它的位置后,将 Spinner 选择设置为该位置,如下所示:

spinner.setSelection(position_of_selected_item);

如果您想设置微调器的上一个选定项目,您必须存储选定项目,然后设置您的选择: 这是一个示例,希望我得到我之前选择的项目,然后从他的数组适配器中获取项目的位置

  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) {

        }
    });