Android 7.0.2自定义Toast显示时间 使用Handler 第一次正常但第二次失败
时间: 2023-12-03 21:42:13 浏览: 47
可能是由于多次调用 `Handler` 导致的问题,建议在第二次调用前先移除之前的消息。
可以使用 `removeCallbacksAndMessages()` 方法移除之前的所有消息,再重新发送新的消息,代码示例:
```java
private Handler mHandler = new Handler();
private Toast mToast;
public void showToast(final String message, final int duration) {
mHandler.removeCallbacksAndMessages(null);
if (mToast == null) {
mToast = Toast.makeText(getApplicationContext(), message, duration);
} else {
mToast.setText(message);
mToast.setDuration(duration);
}
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mToast.show();
}
}, 0);
}
```
这样每次调用 `showToast` 方法时,会先移除之前的消息,然后重新发送新的消息。
相关问题
Android 7.0.2自定义Toast显示时间 但第二次失败
在Android中,Toast的默认显示时间为LENGTH_SHORT(即2秒钟)。如果您想要自定义Toast的显示时间,可以使用以下代码:
```java
Toast toast = Toast.makeText(context, message, duration);
toast.show();
```
其中,duration参数可以设置为Toast.LENGTH_SHORT(2秒钟)或Toast.LENGTH_LONG(3.5秒钟)。如果您需要自定义显示时间,您可以使用以下代码:
```java
Toast toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
toast.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
toast.cancel();
}
}, 3000); // 3秒钟后取消Toast
```
这段代码将在显示Toast后3秒钟自动取消Toast。如果您需要在用户交互时取消Toast,则可以在用户触摸屏幕时调用cancel()方法。
Android 7.0.2自定义Toast显示时间
你可以使用 `Handler` 和 `Toast` 的 `setDuration` 方法来自定义 `Toast` 的显示时间。以下是一个示例代码:
```java
final Toast toast = Toast.makeText(getApplicationContext(), "Custom Toast", Toast.LENGTH_LONG);
toast.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
toast.cancel();
}
}, 2000); // 2秒后取消Toast
```
在这个示例中,`Toast` 的显示时间被设置为 `Toast.LENGTH_LONG`,但是我们使用 `Handler` 来在 2 秒后取消 `Toast` 的显示。你可以根据需要调整 `Handler` 中的延迟时间。
阅读全文