这真的让我抓狂,因为这是我以前做过的事情,但现在却想不出为什么它不起作用了...
我有一个菜单按钮,以通常的方式通过一个menu.xml
文件和onOptionsItemSelected
方法实现,其中包含一个开关,创建并显示一个下拉列表。
我已经添加了setOnItemSelectedListener
,但它似乎从来没有触发过。下拉列表出现了,我选了一个选项或退出了,但是onItemSelected
和onNothingSelected
都没有被调用。
以下是处理菜单按钮的switch语句中"case"和"return true"之间的所有代码。(topThis
是指上下文活动的变量——对于应用程序中的所有其他toast工作正常)
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();
有什么想法吗?我模糊地怀疑我以编程方式创建 Spinner
是问题的原因...
android:spinnerMode="dialog"
,并且您可以设置0大小参数),并将= new Spinner(this);
更改为= (Spinner) findViewById(R.id.dialog_spinner);
。 - LadyWoodi