Intereting Posts
Android – Wake Up and Unlock Device Поверните предварительный просмотр камеры на портретную камеру OpenCV для Android Как совместно использовать файл в андроиде Создание пользовательской раскладки клавиатуры для Android Что такое qualifer при создании нового каталога ресурсов в андроид-студии? В сообщении Android Studio «Paint.setShadowLayer .. графика не точная ..» без этого кода Вызывается: java.lang.IllegalStateException: пакет не установлен? Внедрение Visual Studio 2015 Xamarin без ошибок Обновление сервисов Google Play с 8.4.0 до 9.2.1 вызывает ошибку синхронизации Gradle Есть ли способ изменить андроид: значение windowSoftInputMode из класса java? Как очистить кеш-память Android Расположение Android SDK не должно содержать пробелов, так как это вызывает проблемы с инструментами NDK Исключение SSL при использовании Volley Android Studio: Ice Cream Sandwich (уровень API 15) Конфигурация устройства не отображается, даже если установлен системный образ Android Studio – Импорт библиотеки Simple-Xml

Android Spinner – onItemSelected / setOnItemSelectedListener не запускается

Это сводит меня с ума, так как это то, что я делал раньше, но не могу понять, почему он сейчас не работает …

У меня есть кнопка меню, реализованная обычным способом через файл onOptionsItemSelected метод onOptionsItemSelected с помощью переключателя в нем, который создает и отображает счетчик.

Я добавил setOnItemSelectedListener , но он никогда не срабатывает. Появится счетчик, я выбираю опцию или отступаю, ни onItemSelected , ни onItemSelected ни onNothingSelected не вызываются.

Вот весь код между «case» и «return true» оператора switch-button-handling. ( topThis – это переменная, относящаяся к контексту активности – отлично работает для всех других тостов в приложении)

 String[] widgetModes = {"Mode 1", "Mode2"}; ArrayAdapter<String> widgetModeAdapter = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, widgetModes); widgetModeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); Spinner widgetModeSpinner = new Spinner(this); widgetModeSpinner.setAdapter(widgetModeAdapter); widgetModeSpinner.setPrompt("Choose Widget Mode"); widgetModeSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { Toast.makeText(topThis, "derp", Toast.LENGTH_LONG).show(); } @Override public void onNothingSelected(AdapterView<?> parentView) { Toast.makeText(topThis, "herf", Toast.LENGTH_LONG).show(); } }); widgetModeSpinner.performClick(); 

Есть идеи? Я смутно подозреваю, что факт, что я создаю Spinner программно, – проблема …

Solutions Collecting From Web of "Android Spinner – onItemSelected / setOnItemSelectedListener не запускается"

У меня была аналогичная проблема, когда я выполнял spinner, я разрешил ее, получив родительский вид и установив Adapter-

 spinner1 =(Spinner)findViewById(R.id.spinner1); spinner1.setAdapter(BindSpinner("ProgramMaster",cols,null,true,"")); spinner1.setOnItemSelectedListener(new OnItemSelectedListener() { protected Adapter initializedAdapter=null; @Override public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { if(initializedAdapter !=parentView.getAdapter() ) { initializedAdapter = parentView.getAdapter(); return; } String selected = parentView.getItemAtPosition(position).toString(); if(abc.equals("Select") && !selected.equals("Select")) { do something } else { Do something } textQualification=selected; SearchUpdated("Qualification"); } @Override public void onNothingSelected(AdapterView<?> parentView) { // your code here } }); 

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

Для того, чтобы Toast не показывался, я предлагаю всегда использовать «MyActivity.this» в качестве вашего контекста при создании Toast внутри интерфейса прослушивателя следующим образом:

 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { /** * Called when a new item is selected (in the Spinner) */ public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { // An spinnerItem was selected. You can retrieve the selected item using // parent.getItemAtPosition(pos) Toast.makeText(MyActivity.this, "Hello Toast",Toast.LENGTH_SHORT).show(); } public void onNothingSelected(AdapterView<?> parent) { // Do nothing, just another required interface callback } }); // (optional) 

И .show () в конце легко забыть иногда;)

Фактически, если ваша видимость поворотного устройства отключена, тогда он вызывает щелчок, когда вы вызываете метод performclick (), но он не будет запускать свой setOnItemSelectedListener, поэтому вам нужно изменить видимость, после чего он будет работать

Я знаю, что вопрос немного устарел, но если вы ожидаете обратного вызова AsyncTask, убедитесь, что вы сообщили своему адаптеру об изменениях данных, вызвав notifyDataSetChanged () в потоке обратного вызова!

 @Override public void onPostExecute(String result) { ///do something with your data spinnerArrayAdapter.notifyDataSetChanged(); }