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

2023-09-04 06:21:22 作者:以茎制洞

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

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