安卓10 写出Toast自定义时长方法,并提供取消方法,只有第一次生效 如何解决
时间: 2023-11-28 20:50:59 浏览: 84
在Android 10上,可以通过以下方式自定义Toast的显示时长和取消方法:
1. 自定义Toast的显示时长:
```java
Toast toast = Toast.makeText(context, message, Toast.LENGTH_LONG);
toast.setDuration(duration); // 设置显示时长,duration为int类型,单位为毫秒
toast.show();
```
2. 提供取消方法:
```java
final Toast toast = Toast.makeText(context, message, Toast.LENGTH_LONG);
toast.show();
// 在需要取消的地方调用以下方法
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
toast.cancel();
}
}, duration); // duration为显示时长
```
3. 只有第一次生效的问题解决:
这个问题可能是因为Toast对象多次调用导致的,可以尝试使用单例模式来避免这个问题:
```java
private static Toast mToast;
public static void showToast(Context context, String message, int duration) {
if (mToast == null) {
mToast = Toast.makeText(context, message, duration);
} else {
mToast.setText(message);
mToast.setDuration(duration);
}
mToast.show();
}
```
在调用时,使用上述方法即可:
```java
showToast(context, message, duration);
```
这样,Toast只会在第一次调用时创建,后续的调用会更新文本内容和显示时长。
阅读全文