Страница 1 из 1

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

Добавлено: 17 ноя 2014, 11:12
grem17
В коде определно событие, когда кликаешь по 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);

	}

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

Добавлено: 17 ноя 2014, 12:28
klblk
как вариант вначале вызвать spinner.setSelection(), а уже потом spinner.setOnItemSelectedListener()

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

Добавлено: 18 ноя 2014, 05:56
grem17
да забыл сказать, этот способ в инете видел, пробовал - не помогло

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

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

Добавлено: 19 ноя 2014, 10:06
grem17
есть еще какие-нибудь варианты?

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

Добавлено: 20 ноя 2014, 12:19
grem17
решил сам, через флаги
при старте приложения создается логический флаг с параметром false

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

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