我如何确保任何可见的Snackbar(特别是那些带有snackbar.length_infinite的)在片段被销毁后会被删除?
我是否应该为所有Snackbars使用一个通用的globar变量,并调用dismiss?
片段1.java
private Snackbar snackbar;
@Override
public onDestroy(){
snackbar.dismiss();
}
public Method1(){
snackbar = Snackbar.make(ActivityMain.coordinatorLayout, "Text 1", snackbar.length_indefinite);
snackbar.show();
}
public Method2(){
snackbar = Snackbar.make(ActivityMain.coordinatorLayout, "Text 2", snackbar.length_indefinite);
snackbar.show();
}
//coordinatorLayout is a static variable in ActivityMain which stores reference to the CoordinatorLayout
2条答案
按热度按时间ssgvzors1#
我如何确保任何可见的Snackbar(特别是那些带有snackbar.length_infinite的)在片段被销毁后都将被删除?
要消除这个问题,请调用onDestroy();方法**,就像您所做**一样。
我是否应该为所有Snackbars使用一个通用的globar变量,并调用dismiss?
是的,你可以这样做,因为snackbar在你的类中被使用了很多次,所以最好声明它是全局的。
请访问www.example.com了解更多小吃店详情developer.android.com
2ul0zpep2#
虽然有全局
SnackBar
并确保在onDestroyView()
中关闭它是一个很好的方法。我建议在CoordinatorLayout中 Package 您的Fragment XML布局,并将片段根视图传递给
Snackbar.make
函数,如下所示:fragment_your_fragment.xml
您的片段.kt
这样,当您打开另一个片段(将其添加到堆栈中)时,
Snackbar
将被自动取消