【问题标题】:Toast and duration吐司和持续时间
【发布时间】:2012-04-23 10:41:18
【问题描述】:

我的活动中有一个按钮。如果我点击显示 Toast。但是当我再次单击 Toast 时再次显示。所以结果当我点击很多次时,这个 Toast 会出现很长时间。当第一次消失时,下一个正在显示等等。当我再次单击按钮时我该怎么办,第一个 toast 将被隐藏。

【问题讨论】:

  • 检查this
  • 如何检查我的 toast 是否仍在屏幕上?
  • 当你在屏幕上显示 toast 开始计时器时,如果你再次调用 show toast,则它与给 toast 的持续时间相同,然后检查计时器。如果它仍在运行意味着吐司仍在屏幕上
  • 不需要使用计时器。如果您想关闭以前的 toast,如果显示,并显示新的,那么只需在您的活动中获取一个 Toast 的全局实例,并在您调用取消时将其设为 null。并在调用 cancel() 之前检查此对象是否不为空。

标签: android toast


【解决方案1】:

调用cancel() 方法来隐藏已经显示的Toast。

看看this 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(), "Text", 2000).show(); (2000 是 2 秒的持续时间)
  • 抛出运行时异常:java.lang.RuntimeException: This Toast 不是用 Toast.makeText() 创建的
【解决方案2】:

将此代码添加到您的活动(全局 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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    相关资源
    最近更新 更多