我一直在浏览关于微调器的线程以及何时触发onItemSelected。我得出结论,无论您是手动选择微调项还是通过spinner.setSelection(position)方法以编程方式选择项,都会触发它。
我的问题是OnItemSelected回调方法首先在我的代码中调用,但是在其他几个方法完成执行后执行。这是一种不受欢迎的行为,因为我的代码逻辑依赖于按顺序执行的某些步骤。
if(conition is true)
fillSpecialtySpinner();
if(another condition is true)
fillSubSpecialtySpinner();
fillSpecialtySpinner()方法包含spinner.setSelection(position)代码行。但不知何故,它会在第二个if之后被执行并且fillSubSpecialtySpinner完成执行。
任何帮助将不胜感激。先感谢您!
答案 0 :(得分:0)
如果我理解正确,您希望确保仅在fillSubSpecialtySpinner()
之后调用specialitySpinner.onItemSelected()
方法。
您可以在fillSubSpecialtySpinner()
内致电specialitySpinner.onItemSelected()
吗?
答案 1 :(得分:0)
在执行其他所有功能之前,回调并不会发生,是的,广告Baqueta说。
所以你不能做一些事情,比如将boolean设置为false,对spinner进行更改,(如果boolean为true,则在onItemSelected中执行代码),然后将其设置为true,因为该函数将被调用为AFTER你的布尔值变为真。
但是,我有一个简单而通用的问题解决方案(请参阅问题的接受答案):