简体   繁体   English

微调框无法在Android中保存其状态

[英]Spinner not save its state in Android

I can't find a way to save the state of a spinner using the SharedPreferences`. 我找不到使用SharedPreferences`保存微调器状态的方法。 The code i use is this one: 我使用的代码是这样的:

mIo = (Spinner) view.findViewById(R.id.schedulerSpinner);
mIo.setSelection(preferences.getInt("spinnerSelection",0));
String[] availableIo = {"one", "two", "three", "four"};
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(getActivity(),android.R.layout.simple_spinner_item, availableIo);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mIo.setAdapter(adapter);
mIo.setOnItemSelectedListener(new OnItemSelectedListener() {

    public void onItemSelected(AdapterView<?> arg0, View view, int position, long id) {
        int item = mIo.getSelectedItemPosition();

        String selected = mIo.getItemAtPosition(position).toString();
        Toast.makeText(this, "Selected item: " + selected, Toast.LENGHT_SHORT).show();
        editor = preferences.edit();
        editor.putInt("spinnerSelection", item);
        editor.commit();

    }
    public void onNothingSelected(AdapterView<?> arg0) {

     }
});

when i click the item i want it goes well and the toast display the item correctly, but if i close and re open the app the spinner shows the first item and not which i have selected before.. I tryied different ways but with no results. 当我单击该项目时,我希望它运行良好,并且吐司正确显示了该项目,但是如果我关闭并重新打开该应用程序,则微调器将显示第一个项目,而不是我之前选择的项目。.我尝试了不同的方法,但没有结果。 Thanks 谢谢

The reason it is updating to first position is because you are setting the item before setting the adapter to spinner at that time there are no values in spinner so you calling setSelection() makes no difference, because new values are set in spinner by adapter. 之所以更新到第一个位置,是因为您当时在将适配器设置为Spinner之前先设置了项,那时Spinner中没有值,因此调用setSelection()不会有任何区别,因为新的值是由适配器在Spinner中设置的。 update your code like below 如下更新代码

mIo = (Spinner) view.findViewById(R.id.schedulerSpinner);
String[] availableIo = {"one", "two", "three", "four"};
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(getActivity(),android.R.layout.simple_spinner_item, availableIo);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mIo.setAdapter(adapter);
//SET SELECTION AFTER YOU SET THE ADAPTER NOT BEFORE IT
mIo.setSelection(preferences.getInt("spinnerSelection",0));
mIo.setOnItemSelectedListener(new OnItemSelectedListener() {

    public void onItemSelected(AdapterView<?> arg0, View view, int position, long id) {
        int item = mIo.getSelectedItemPosition();

        String selected = mIo.getItemAtPosition(position).toString();
        Toast.makeText(this, "Selected item: " + selected, Toast.LENGHT_SHORT).show();
        editor = preferences.edit();
        editor.putInt("spinnerSelection", item);
        editor.commit();

    }
    public void onNothingSelected(AdapterView<?> arg0) {

     }
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM