Spinner OnItemSelected不起作用

时间:2012-06-05 16:46:29

标签: android events click spinner

我已多次查看我的代码并尝试了不同的“解决方案”,显然它们都没有用。问题是,当单击一个项目时,监听器永远不会被触发。我发现当单击一个项目时,它出现在Logcat中:

  

窗口已经集中,无视焦点增益:   com.android.internal.view.IInputMethodClient$Stub$Proxy@40683498

Spinner是在Button触发的函数中动态创建的。

  

代码:

public void showFilterCountries(View v){

     Spinner country_list=new Spinner(this);

     ArrayAdapter<String> adapter= new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, countries);
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
     country_list.setAdapter(adapter);
     country_list.setPrompt("Select a country");

     country_list.setOnItemSelectedListener(new OnItemSelectedListener() {
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int pos, long arg3) {
                Log.d("","selected");                   
            }

            public void onNothingSelected(AdapterView<?> arg0) {
                Log.d("","none selected");
            }
        });

     country_list.performClick();
    }

2 个答案:

答案 0 :(得分:1)

我解决了使用AlertDialog.Builder而不是Spinner(这是正确的方法),像这样:

https://stackoverflow.com/a/7635966/1181261

答案 1 :(得分:0)

我刚刚经历过这个问题,一个我不能工作的微调器。问题是它在一个片段中实现了AdapterView.OnItemSelectedListener,问题是它在活动中也实现了AdapterView.OnItemSelectedListener,问题是活动总是捕获事件,所以我不得不把我的逻辑放在片段,并让活动调用片段方法。

TL:DR,如果你的onItemSelected从未被调用,它可能是活动,或者是另一个听到它的侦听器,显然Android只喜欢监听onItemSelected。