Android的微调 - onItemSelected / setOnItemSelectedListener没有触发Android、onItemSelected、setOnItemSelected

由网友(以茎制洞)分享简介:这是因为这件事情我已经做过我发疯,但想不通为什么它现在没有工作...... This is driving me nuts since it's something I've done before but can't figure out why it isn't working now...我有一个菜单按钮,通...

这是因为这件事情我已经做过我发疯,但想不通为什么它现在没有工作......

This is driving me nuts since it's something I've done before but can't figure out why it isn't working now...

我有一个菜单按钮,通过 menu.xml文件文件和 onOptionsItemSelected 法中有一个开关,创建并显示一个微调。

I've got a menu button, implemented in the usual way via a menu.xml file and the onOptionsItemSelected method with a switch in it, that creates and displays a spinner.

我已经添加了 setOnItemSelectedListener ,但它似乎永远不会触发。在微调的出现,我挑一个选项或回退,既不 onItemSelected onNothingSelected 被调用。

I've added the setOnItemSelectedListener, but it never seems to trigger. The spinner appears, I pick an option or back out, neither onItemSelected or onNothingSelected are called.

下面是所有的案例的code和回归真正的菜单键处理switch语句。 ( topThis 是一个变量指的是活动的背景 - 在应用程序中的所有其他敬酒正常工作)

Here is all the code between the "case" and "return true" of the menu-button-handling switch statement. (topThis is a variable referring to the context of the activity - works fine for all other toasts in the app)

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

任何想法?我隐约怀疑,其实我创建了微调编程的问题...

Any ideas? I vaguely suspect that the fact I'm creating the Spinner programmatically is the problem...

推荐答案

我有类似的问题时,我正在执行一个微调,我解决它通过让家长查看和设置适配器 -

I had the similar problem when I was implementing a spinner, I resolved it by getting the parent View and set 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
    }
});