Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 以编程方式添加的微调器的OnItemSelectedListener不会触发_Android_Spinner_Onitemclicklistener - Fatal编程技术网

Android 以编程方式添加的微调器的OnItemSelectedListener不会触发

Android 以编程方式添加的微调器的OnItemSelectedListener不会触发,android,spinner,onitemclicklistener,Android,Spinner,Onitemclicklistener,我有一个以编程方式打开的微调器。它会弹出,看起来工作正常,但出于某种原因,我的OnItemSelectedListener不会触发其中的任何事件 public class BeerConverter extends Activity { ArrayAdapter<CharSequence> adapter3; Spinner spinner03; @Override public void onCreate(Bundle savedInstanc

我有一个以编程方式打开的微调器。它会弹出,看起来工作正常,但出于某种原因,我的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();

        }
公共类BeerConverter扩展活动{
阵列适配器3;
喷丝器喷丝器03;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
喷丝器03=新喷丝器(此);
adapter3=新的ArrayAdapter(这是android.R.layout.simple\u微调器\u项);
adapter3.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
喷丝头03.设置适配器(适配器3);
喷丝器03.setOnItemSelectedListener(新的MyOnItemSelectedListener3());
适配器3.添加(“填充物”);
喷丝头03.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
    }
};
公共类MyOnItemSelectedListener3实现OnItemSelectedListener{
已选择公共视图(AdapterView父视图、视图v、整型位置、长id){
curPos=位置;
Context=getApplicationContext();
CharSequence text=“测试文本。若您看到这一点,则表示调用了MyOnItemSelectedListener3。”;
int duration=Toast.LENGTH\u SHORT;
Toast Toast=Toast.makeText(上下文、文本、持续时间);
toast.show();
}
未选择公共无效(AdapterView arg0)
{
//无所事事
}
};

所以当我发送
喷丝器03.performClick()时;
微调器可以正确弹出,但当微调器中的某个项目被选中时,它只会关闭,不会调用OnItemSelectedListener。它看起来像是很久以前的事了,但从来没有发布过解决方案。

正如上面的注释线程所建议的,如果视图处于活动状态,那么与视图相关的许多事件(如果不是所有的话)的行为都不会像您所期望的那样问题未附加到窗口。请不要使用未附加的视图来驱动任何类型的用户交互。

我也遇到了同样的问题。我通过将微调器可见性设置为“不存在”来修复此问题.

何时/如何显示微调器?在这段代码中,您只需独立于主布局创建一个微调器。当我使用
微调器03.performClick();
时,微调器会显示良好,但单击某个项目时侦听器不会触发。我已将问题编辑为(希望如此)更清楚一点。我觉得微调器没有添加到全局布局有点奇怪,我觉得这可能是问题所在。弹出窗口会显示,但微调器视图本身并不“存在”在布局中。这可能会阻止侦听器被调用。您是否考虑过改用带有列表的对话框?是否确定未触发
onItemSelected
?确保使用Log而不是Toast测试它。您不应该使用
getApplicationContext()
,使用您的活动上下文来显示toast。@dziobas我用一个日志测试了上述代码,但日志从未显示。