我想让用户单击一个按钮,然后他们会看到一个“Toast”消息弹出窗口,它会消失,然后按钮点击执行的操作就会发生。做这个的最好方式是什么?我应该在捕获click事件时触发Timer并让它超时(当显示toast时)然后调用处理代码或者我可以使用事件处理中的内置延迟机制吗? 我不希望我的干杯在事件处理中全部参与
答案 0 :(得分:1)
如果我真的遵循您的要求,则应执行以下代码:
// interface of the "Toast" no matter what the implementation actually is
public interface Toast
{
void open( String message );
void closeFadingAway();
}
// calling code
public class ClientCode
{
private static final int myDelay = 1000; // 1 second in millis
private Toast myToast;
void onMyAction()
{
myToast.open( "Your action is being handled..." );
Scheduler.get().scheduleFixedDelay( new RepeatingCommand()
{
@Override
public boolean execute()
{
myToast.closeFadingAway();
performAction();
return false; // return false to stop the "repeating" = executed only once
}
}, myDelay );
}
void performAction()
{
// do something interesting
}
}
现在,如果你真的想要在用户按下吐司中的某个按钮时能够中断动作,那么这是另一回事。
答案 1 :(得分:0)
如果您使用的是弹出式面板,则可以使用弹出式面板上的addCloseHandler,然后从此处调用按钮调用的方法。
popUpPanel.addCloseHandler(new CloseHandler<PopupPanel>(){
@Override
public void onClose(CloseEvent<PopupPanel> event) {
// TODO Do the closing stuff here
}
});
因此,当PopupPanel消失并且关闭事件触发时,你可以在那里发挥你的魔力。