2

我有一个以编程方式打开的微调器。它弹出并且似乎工作正常,但由于某种原因,我的 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。看起来这个人不久前遇到了同样的问题,但最终没有发布解决方案。

4

2 回答 2

2

正如上面的评论线程所暗示的,如果相关视图未附加到窗口,则与视图相关的许多事件(如果不是所有事件)都不会像您预期的那样运行。不要使用未附加的视图来驱动任何类型的用户交互。

于 2011-07-09T18:19:20.590 回答
2

我有同样的问题。我通过设置微调器可见性而不是“消失”来修复它。

于 2012-07-29T06:21:01.033 回答