Как выбрать значение Spinner и не выполнять его?

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
grem17
Сообщения: 85
Зарегистрирован: 16 сен 2014, 11:54

Как выбрать значение Spinner и не выполнять его?

Сообщение grem17 » 17 ноя 2014, 11:12

В коде определно событие, когда кликаешь по Spinner и выбираешь строку из списка - она отображается на экране и сохраняется в конфигурационном файле.
Когда приложение стартует - переопределяю метод активити protected void onResume(), данные считываются из конф. файла и методом spinner.setSelection(val); - выбирается позиция сохраненная в предыдущий раз.

Проблема в следующем - всегда при старте срабатывает событие spinner.setOnItemSelectedListener и метод определенный внутри него, как то криво получается, пользователь ни чего не выбрал, просто запустил приложение, а на экране высвечивается текущая строка. Как этого избежать?

UPD: если перевернуть экран, тоже срабатывает это событие...плохо

Код: Выделить всё

//задать событие на выбор из списка
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View itemSelected, int selectedItemPosition, long selectedId) {
Toast.makeText(MainActivity.this, String.valueOf(selectedItemPosition), Toast.LENGTH_LONG).show();
...сохраняю значение selectedItemPosition в конф.файл
			}
			public void onNothingSelected(AdapterView<?> parent) {
			}
		});

protected void onResume() {
super.onResume();
val = считываю данные из конф.файла
spinner.setSelection(val);

	}

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Как выбрать значение Spinner и не выполнять его?

Сообщение klblk » 17 ноя 2014, 12:28

как вариант вначале вызвать spinner.setSelection(), а уже потом spinner.setOnItemSelectedListener()

grem17
Сообщения: 85
Зарегистрирован: 16 сен 2014, 11:54

Re: Как выбрать значение Spinner и не выполнять его?

Сообщение grem17 » 18 ноя 2014, 05:56

да забыл сказать, этот способ в инете видел, пробовал - не помогло

именно в такой очередности вставлял в метод onCreate и onResume

grem17
Сообщения: 85
Зарегистрирован: 16 сен 2014, 11:54

Re: Как выбрать значение Spinner и не выполнять его?

Сообщение grem17 » 19 ноя 2014, 10:06

есть еще какие-нибудь варианты?

grem17
Сообщения: 85
Зарегистрирован: 16 сен 2014, 11:54

Re: Как выбрать значение Spinner и не выполнять его?

Сообщение grem17 » 20 ноя 2014, 12:19

решил сам, через флаги
при старте приложения создается логический флаг с параметром false

в методе onResume() меняется значение spinner на нужное нам
в методе onCreate, где обрабатывается результат нажатия spinner.setOnItemSelectedListener делаю проверку - если флаг в положении false то меняю его на true, если флаг true - о выполняю код

все работает как планировалось

Ответить