сохранить значение выбранного элемента счетчика, используя общие настройки - PullRequest
4 голосов
/ 15 июля 2011

Как сохранить текущее выбранное значение счетчика, чтобы при повторном открытии приложения сохраненное значение автоматически выбиралось по умолчанию?

Мой текущий код:

 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.loginpage);


     final Spinner spinner = (Spinner) findViewById(R.id.spinner1);
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
         this, R.array.spinner_array, android.R.layout.simple_spinner_item);
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

     spinner.setAdapter(adapter);



     spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {           
           @Override
           public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
               SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences( getBaseContext());
               SharedPreferences.Editor prefEditor = prefs.edit();
               prefEditor.putString("savedValue",spinner.getSelectedItem().toString());

               String savedValue=spinner.getSelectedItem().toString();

               for(int i=0;i<6;i++)
               if(savedValue.equals(spinner.getItemAtPosition(i).toString()))
               {
                   spinner.setSelection(i);
                   break;
               }
           }
           @Override
           public void onNothingSelected(AdapterView<?> parent){}
    });

1 Ответ

5 голосов
/ 15 июля 2011

Я подумал, что вы хотите - В какой-то момент вы хотите показать свое сохраненное значение (исходя из общих предпочтений) в счетчике как выбранный элемент. Для этого

установите адаптер счетчика со всеми значениями по умолчаниювключает в себя ваше сохраненное значение. Теперь вы хотите показать сохраненное значение как выбранное. Предположим, у вас есть 6 элементов в адаптере

String savedValue=PreferenceManager
                     .getDefaultSharedPreferences(context)
                     .getString("savedValue","");

for(int i=0;i<6;i++)
if(savedValue.equals(spinner.getItemAtPosition(i).toString())){
     spinner.setSelection(i);
     break;
}

Чтобы сохранить значение счетчика при общем предпочтении, сделайте это

 SharedPreferences prefs;
 prefs = PreferenceManager.getDefaultSharedPreferences(context);
 SharedPreferences.Editor prefEditor = prefs.edit();
 prefEditor.putString("savedValue",spinner.getSelectedItem().toString());
 prefEditor.commit();
...