OnItemSelectedListener для Spinner, который был добавлен программно, не запускается - PullRequest
2 голосов
/ 09 июля 2011

У меня есть счетчик, который открывается программно.Он всплывает и, кажется, работает нормально, но по какой-то причине мой OnItemSelectedListener не вызывает никаких событий в нем.

public class BeerConverter extends Activity {

    ArrayAdapter<CharSequence> adapter3;
    Spinner spinner03;


    @Override
    public void onCreate(Bundle savedInstanceState) {


        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        spinner03 = new Spinner(this);
        adapter3 = new ArrayAdapter<CharSequence> (this, android.R.layout.simple_spinner_item);
        adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

        spinner03.setAdapter(adapter3);

        spinner03.setOnItemSelectedListener(new MyOnItemSelectedListener3());
        adapter3.add("Stuff");
        spinner03.performClick();

        }

Затем я создаю слушателя как вложенный класс:

public class MyOnItemSelectedListener3 implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parentview, View v,int position, long id){
        curPos = position;
        Context context = getApplicationContext();
        CharSequence text = "Test text. If you see this, it means MyOnItemSelectedListener3 was called.";
        int duration = Toast.LENGTH_SHORT;
        Toast toast = Toast.makeText(context, text, duration);
        toast.show();

    }

    public void onNothingSelected(AdapterView<?> arg0) 
    {
        //do nothing
    }
};

Поэтому, когда я отправляю spinner03.performClick();, Spinner появляется правильно, но когда элемент в Spinner выбран, он просто закрывается и не вызывает OnItemSelectedListener.Похоже, у этого человека была та же проблема некоторое время назад, но он так и не опубликовал решение.

Ответы [ 2 ]

2 голосов
/ 29 июля 2012

У меня была такая же проблема. Я исправил это, установив видимость счетчика, а не «Унесенные».

2 голосов
/ 09 июля 2011

Как показано в ветке комментариев выше, многие, если не все события, связанные с представлением, не будут вести себя так, как вы ожидаете, если рассматриваемое представление не прикреплено к окну. Не используйте неприсоединенные представления для управления любым видом взаимодействия с пользователем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...