0

我想让用户点击一个按钮,然后他们会看到一个“Toast”消息弹出,它会消失,然后按钮点击执行的动作应该发生。做这个的最好方式是什么?我是否应该在捕获单击事件时触发 Timer 并让它超时(在显示 toast 时)然后调用处理代码,或者我可以使用事件处理中的任何内置延迟机制?我不希望我的 toast 参与事件处理

4

2 回答 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 回答