我的问题是:当我调试代码时,例如:
someSpinner.setSelection(0); someEditText.setEnabled(真);
然后我看到第一个动作实际上是在第二个动作之后执行的。我的猜测是,微调器动作被置于某种不能立即启动的异步作业中。我的目标是等到第一个动作完成后再运行第二个动作。 有谁知道如何实现这个目标?
在Eclipse RCP中,我解决了类似于以下内容的问题:
uiJob1.addJobChangeListener(new JobChangeAdapter() {
@Override
public void done(IJobChangeEvent event) {
if (event.getResult().isOK()) {
uiJob2.schedule();
} else {
...
}
}
});
// 2
uiJob2.addJobChangeListener(new JobChangeAdapter() {
@Override
public void done(IJobChangeEvent event) {
if (event.getResult().isOK()) {
...
} else {
...
}
}
});
uiJob1.schedule();
答案 0 :(得分:0)
事实上,这在Android中很常见:您无法保证所有操作都会以同步模式发生 - 也就是您在代码中执行它们的顺序 - 当它们是事件驱动时。
我认为您应该尝试在您的微调器上添加OnItemSelectedListener()
侦听器,并查看此事件是否也在捕捉您的操作:someSpinner.setSelection(0);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
// your code here
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
// your code here
}
});
让我知道这是否可行。
谢谢, 保罗
答案 1 :(得分:0)
感谢您的快速回答,保罗。
我在微调器上已经有一个OnItemSelectedListener。在该侦听器内部,在一种情况下,我正在执行someEditText.setEnabled(false)。并且因为命令不是在同步模式下执行,我的第一篇文章的第二个动作(someEditText.setEnabled(true);)没有效果: - /
我发现通过调用someSpinner.setSelection(0,false);它正在someEditText.setEnabled(true)之前执行;但我不想依赖这个“解决方案”...