在一个android项目中,我有一个需要执行序列的函数foo 按顺序操作在foo里面我想调用showDialog来显示一个 对话并等待。然后从showDialog中,当用户点击一个条目时我会 就像通知()foo函数的对话框一样,它可以继续。我不 希望foo继续执行,直到对话框告诉它。到目前为止我有 提出以下因某些原因似乎不起作用的事情:
class FooActivity {
synchronized void foo(String param) {
try {
showDialog(DIALOG_SELECT_FOO);
wait();
doNextThing(param);
}
} catch (Exception e) { }
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_SELECT_FOO:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// ...
builder.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
synchronized(FooActivity.this) {
FooActivity.this.notify();
}
}
});
return builder.create();
}
// should never get here
return null;
}
}
基本上,我根本没有看到对话框。我想这是因为wait()是 在对话框有机会运行之前被调用。该对话框是否在 与调用者相同的线程?有关如何修复此代码的任何想法吗?
谢谢,
John Goche