Intereting Posts
Изменение содержимого ImageView вызывает OutOfMemoryError Как некоторые приложения (wechat) игнорируют поддельное местоположение, а затем обнаруживают реальный? Цель ACTION_VIEW для файла с неизвестным MimeType Пример загрузки JSON с сервера? Скопировать каталог из активов в папку с данными Установка продолжительности сообщений Crouton на Android Компиляция приложения для Android с использованием boost, неопределенная ссылка на 'mbtowc' Apk для планшета, по-прежнему говорит «Предназначен для телефонов» Android: Как подключить временное, сгенерированное изображение к электронному письму? Неожиданное значение Android CallLog.Calls TYPE Android DrawBitmap Производительность для множества растровых изображений? Напечатать символ авторского права в TextView Ошибка теста блока привязки к андроидной ошибке Не удалось проанализировать параметры компилятора привязки данных. Params: Android RemoteExceptions and Services Пользовательский просмотр уведомлений

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(); }