我想让用户点击一个按钮,然后他们会看到一个“Toast”消息弹出,它会消失,然后按钮点击执行的动作应该发生。做这个的最好方式是什么?我是否应该在捕获单击事件时触发 Timer 并让它超时(在显示 toast 时)然后调用处理代码,或者我可以使用事件处理中的任何内置延迟机制?我不希望我的 toast 参与事件处理
问问题
407 次
2 回答
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
}
}
现在,如果你真的想在用户按下 toast 中的某个按钮时中断操作,那就另当别论了。
于 2013-03-27T19:16:27.037 回答
0
如果您使用的是弹出式面板,您可以使用弹出式面板上的 addCloseHandler 并从此处调用本应由按钮调用的方法。
popUpPanel.addCloseHandler(new CloseHandler<PopupPanel>(){
@Override
public void onClose(CloseEvent<PopupPanel> event) {
// TODO Do the closing stuff here
}
});
因此,当 PopupPanel 消失并触发关闭事件时,您可以在那里施展魔法。
于 2013-03-27T14:18:13.537 回答