在其他几个方法完成执行后,会触发Spinner的Android OnItemSelected

时间:2012-05-29 08:29:06

标签: java android spinner listener

我一直在浏览关于微调器的线程以及何时触发onItemSelected。我得出结论,无论您是手动选择微调项还是通过spinner.setSelection(position)方法以编程方式选择项,都会触发它。

我的问题是OnItemSelected回调方法首先在我的代码中调用,但是在其他几个方法完成执行后执行。这是一种不受欢迎的行为,因为我的代码逻辑依赖于按顺序执行的某些步骤。

if(conition is true)
  fillSpecialtySpinner();

if(another condition is true)
  fillSubSpecialtySpinner();

fillSpecialtySpinner()方法包含spinner.setSelection(position)代码行。但不知何故,它会在第二个if之后被执行并且fillSubSpecialtySpinner完成执行。

任何帮助将不胜感激。先感谢您!

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望确保仅在fillSubSpecialtySpinner()之后调用specialitySpinner.onItemSelected()方法。

您可以在fillSubSpecialtySpinner()内致电specialitySpinner.onItemSelected()吗?

答案 1 :(得分:0)

在执行其他所有功能之前,回调并不会发生,是的,广告Baqueta说。

所以你不能做一些事情,比如将boolean设置为false,对spinner进行更改,(如果boolean为true,则在onItemSelected中执行代码),然后将其设置为true,因为该函数将被调用为AFTER你的布尔值变为真。

但是,我有一个简单而通用的问题解决方案(请参阅问题的接受答案):

Undesired onItemSelected calls