我的活动实现了微调控件的OnItemSelected侦听器。它有一个有趣的问题,即在活动显示时触发onItemSelected回调。所以我用一个旗帜破解解决它(我讨厌它,但在这一点上,我只是想让应用程序工作)。微调不会响应点击...即使onItemSelected被调用?
奇怪的是,即使回调在活动开始时被调用,我的实际触摸选择也不起作用。我可以触摸列表,打开它,查看阵列适配器中的字符串,甚至可以触摸它以使其消失 - 但回调从未被调用。
我的代码:
public class MyActivity extends Activity implements OnItemSelectedListener {
…
private ArrayList<String> mMyTypes = null;
private ArrayAdapter<String> mMyAdapter = null;
private Spinner mMyTypeSpinner = null;
// hack for spinner
boolean isFirstRunWithSpinner = true;
在的onCreate():
mMyTypeSpinner = (Spinner) findViewById(R.id.my_activity_spinner);
mMyTypes = new ArrayList<String>();
mMyTypes.add("Test string");
mMyAdapter = new ArrayAdapter<String>(this, R.layout.custom_spinner_style, mMyTypes);
mMyAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mMyTypeSpinner.setAdapter(mMyAdapter);
// spinner listener
mMyTypeSpinner.setOnItemSelectedListener(this);
回调:
@Override
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
Toast
.makeText(ConfirmEditActivity.this, "Selected", Toast.LENGTH_LONG)
.show();
if(isFirstRunWithSpinner) { isFirstRunWithSpinner = false; return; }
…
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
Toast
.makeText(ConfirmEditActivity.this, "Nothing", Toast.LENGTH_LONG)
.show();
}
的吐司右图所示显示在活动时,但是当我选择微调器中的项目,微调控制器解散并且不再显示面包(更不用说c中的其余代码allback无法执行)。
是否有观察?
我真的希望这个简单的东西...
当我添加多个项目的项目列表,他们是可点击的,但第一个不是... – 2010-07-23 15:42:42
我目前面临同样的问题?你现在是否找到了解决方案? – KarlKarlsom 2012-02-01 15:34:53
我已经在下面发布了您的问题的答案。 – MrMaffen 2013-02-23 23:56:27