toast第二次有时不显示

看是不是这样做的。这里牵扯到回收机制,toast有可能在你调的时候就回收了。
private static Toast toast;
if (toast == null) {
            toast = Toast.makeText(context, text, duration);
        } else {
            toast.setText(text);
        }
        toast.setGravity(Gravity.CENTER, 0, 0);
        toast.show();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在 Android 中,可以使用 `Toast` 类实现简单的消息提示。默认情况下,`Toast` 的显示时间是 2 秒钟。如果需要自定义显示时间,可以使用 `setDuration(int duration)` 方法来设置。单位为毫秒。 例如,如果你需要将 `Toast` 的显示时间设置为 5 秒钟,代码如下: ``` Toast toast = Toast.makeText(getApplicationContext(), "Hello, world!", Toast.LENGTH_SHORT); toast.setDuration(5000); toast.show(); ``` 但是,如果你在第二次显示 `Toast` 的时候,还是使用了上述代码,那么就会出现显示时间不符合预期的情况。这是因为 `Toast` 是一个系统级别的组件,它的显示时间是受到限制的。在 Android 中,如果连续显示两个 `Toast`,第二个 `Toast` 的显示时间会被截断,只显示 1 秒钟左右。 为了解决这个问题,你可以考虑使用 `Handler` 或者 `Timer` 来实现延时显示。具体实现方式可以参考下面的示例代码: ``` private Toast mToast; private Handler mHandler = new Handler(); private void showToast(String message, int duration) { mHandler.removeCallbacksAndMessages(null); // 取消之前的定时任务 if (mToast != null) { mToast.cancel(); mToast = null; } mToast = Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT); mToast.setDuration(duration); mToast.show(); mHandler.postDelayed(new Runnable() { @Override public void run() { mToast.cancel(); mToast = null; } }, duration); } ``` 在上面的代码中,我们创建了一个 `Handler` 对象,用于处理延时任务。在 `showToast` 方法中,我们先取消之前的定时任务和 `Toast`,然后重新创建一个 `Toast` 并设置其显示时间。接着,我们使用 `Handler.postDelayed` 方法来延时取消 `Toast` 的显示。这样就可以避免连续显示两个 `Toast` 的时候,第二个 `Toast` 的显示时间被截断的情况了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值