Java 更改片段后如何取消显示堆叠的toast?
我想在用户转到另一个片段后,移除堆叠的Android祝酒词。我有堆叠的片段,在每个片段中,我有两个按钮触发不同的Toast消息。当一个片段的操作完成,用户导航到另一个片段或按下后退按钮时,祝酒会一直显示。这主要发生在用户快速点击按钮并强制祝酒堆叠时 或者,当我实例化全局Toast对象并调用cancel()时,无论用户点击按钮多少次,这两个Toast都会停止在片段的生命周期中显示Java 更改片段后如何取消显示堆叠的toast?,java,android,toast,Java,Android,Toast,我想在用户转到另一个片段后,移除堆叠的Android祝酒词。我有堆叠的片段,在每个片段中,我有两个按钮触发不同的Toast消息。当一个片段的操作完成,用户导航到另一个片段或按下后退按钮时,祝酒会一直显示。这主要发生在用户快速点击按钮并强制祝酒堆叠时 或者,当我实例化全局Toast对象并调用cancel()时,无论用户点击按钮多少次,这两个Toast都会停止在片段的生命周期中显示 toast1 = new Toast(getContext()); toast2 = new Toast(getCon
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
对象,而是应该使用Toast
的多个实例。所以,你可以一个一个地取消它
toast1 = new Toast(getContext());
toast2 = new Toast(getContext());
showFirstToast(toast).show();
showSecondToast(toast).show();
toast1.cancel()
不要使用全局
Toast
对象,而是应该使用Toast
的多个实例。所以,你可以一个一个地取消它
toast1 = new Toast(getContext());
toast2 = new Toast(getContext());
showFirstToast(toast).show();
showSecondToast(toast).show();
toast1.cancel()
为了避免堆积的烤面包,我重复使用一个烤面包
Toast toast;
protected void showToast(final String text) {
if (toast == null)
toast = Toast.makeText(getActivity(), text, Toast.LENGTH_SHORT);
else
toast.setText(text); // smoother transition than cancel + new toast
toast.show();
}
@Override
public void onPause() {
if(toast != null)
toast.cancel();
super.onPause();
}
为了避免堆积的烤面包,我重复使用一个烤面包
Toast toast;
protected void showToast(final String text) {
if (toast == null)
toast = Toast.makeText(getActivity(), text, Toast.LENGTH_SHORT);
else
toast.setText(text); // smoother transition than cancel + new toast
toast.show();
}
@Override
public void onPause() {
if(toast != null)
toast.cancel();
super.onPause();
}
我也试过了,但问题依然存在。为了更好地理解,我编辑了这个问题。我也尝试过,但问题仍然存在。为了更好地理解,我对问题进行了编辑。祝酒词用于系统/关键类型的消息,因此在正确使用时,您不会希望它们在其他地方导航时消失。另一种方法是使用SnackBar,当你离开时它会消失。这可能是因为我试图使用Toast来通知流程的完成。Snackbar光环动画是否可消费?我希望它像Toast一样淡入/淡出。看起来像是的,使用
setAnimationMode(BaseTransientBottomBar.ANIMATION\u MODE\u fade)
。它可以放置在视图中的任何位置?请参见此处:Toast用于系统/关键类型的消息,因此在正确使用时,您不会希望它们在导航到其他地方时消失。另一种方法是使用SnackBar,当你离开时它会消失。这可能是因为我试图使用Toast来通知流程的完成。Snackbar光环动画是否可消费?我希望它和Toast一样淡入淡出。看起来像是的,使用setAnimationMode(BaseTransientBottomBar.ANIMATION\u MODE\u fade)
。它可以放置在视图中的任何位置?请参见此处:是否有任何方法可以像在onPause()中一样在片段事务中使用Toast.cancel()?是否有任何方法可以使用Toast.cancel()在片段事务上,就像在onPause()中一样?