【发布时间】:2020-07-22 10:54:30
【问题描述】:
我想在用户转到另一个 Fragment 后删除堆叠的 Android Toast。我有堆叠的片段,在每个片段中,我有两个按钮触发不同的 Toast 消息。当片段的操作完成并且用户导航到另一个片段或按下返回按钮时,Toast 将保持显示。这主要发生在用户点击按钮太快并强制 Toast 堆叠时。
或者当我实例化全局 Toast 对象并调用 cancel() 时,无论用户点击按钮多少次,两个 toast 都不会在片段的生命周期中显示。
toast1 = new Toast(getContext());
toast2 = new Toast(getContext());
showFirstToast(toast1).show();
showSecondToast(toast2).show();
private Toast showFirstToast(Toast toast){
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.toast_layout_correct, (ViewGroup)
getActivity().findViewById(R.id.toast_layout));
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView(layout);
return toast;
}
【问题讨论】:
-
Toast 用于系统/关键类型的消息,因此在正确使用时,您不希望它们在导航到其他地方时消失。另一种方法是使用 SnackBar,当您离开时它会消失。
-
这可能是因为我正在尝试使用 Toast 来通知该过程的完成。 SnackBars aperance 动画是否可定制?我希望它像 Toast 一样淡入/淡出。
-
看起来是的,
setAnimationMode(BaseTransientBottomBar.ANIMATION_MODE_FADE)。 -
而且它可以定位在View上的任何位置?