烤面包和持续时间

3

我在我的活动中有一个按钮。 如果我点击显示Toast。 但是当我再次单击时,Toast会再次显示。 因此,在结果中,当我多次单击时,此Toast将出现长时间。 当第一次消失时,下一个正在显示等等。 我怎么做才能在再次单击按钮时隐藏第一个toast。


1
请查看此链接:https://dev59.com/N1XTa4cB1Zd3GeqPzDDn#5295800 - silwar
我怎样才能检查我的Toast是否仍然在屏幕上显示? - edi233
当您在屏幕上显示Toast时,请启动计时器,其持续时间与Toast的持续时间相同。如果您再次调用show toast,则检查计时器。如果它仍在运行,则表示Toast仍然在屏幕上。 - silwar
不需要计时器。如果你想关闭之前的提示(如果有显示),然后显示新的提示,只需在你的Activity中采用全局实例的Toast,每当你调用cancel时将其置为空。在调用cancel()之前,请检查此对象是否不为null。 - N-JOY
2个回答

5

如果Toast已经显示,调用cancel()方法来隐藏它。

可以参考这个API

只需要在Toast对象上简单调用即可实现。

Toast toast = new Toast(context);

toast.setText("Text");
toast.show();//(call show()  to display Toast)
toast.cancel();//(call cancel() to  hide Toast).

当我尝试使用上述代码时,出现了错误消息。解决方案是使用静态方法“Toast.makeText”:Toast.makeText(getApplicationContext(),“文本”,2000).show();(2000是2秒的持续时间) - Bruno Bieri
抛出运行时异常:java.lang.RuntimeException: This Toast was not created with Toast.makeText() - Abimbola Esuruoso

3
将以下代码添加到您的活动中(全局toast),并在您想显示新文本时取消它。
Toast myLovelyToastThatNeverDies;
public void onClick(View v) {

    if(myLovelyToastThatNeverDies==null)
        myLovelyToastThatNeverDies = new Toast(Activity.this);
    else
        myLovelyToastThatNeverDies.cancel();
    myLovelyToastThatNeverDies.setText("my new text");
    myLovelyToastThatNeverDies.setDuration(anAverageDuration);
    myLovelyToastThatNeverDies.show();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接