如何确保一旦碎片被销毁,任何可见的Snackbar (特别是带有snackbar.length_indefinite的)都会被清除?
对于所有的Snackbar,我是否应该使用一个通用的globar变量,并对其进行回放?像下面这样吗?
Fragment1.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发布于 2016-03-08 06:55:28
如何确保一旦碎片被销毁,任何可见的Snackbar (特别是带有snackbar.length_indefinite的)都会被清除?
若要拒绝此操作,请将其称为onDestroy();方法,就像您所做的一样。
对于所有的Snackbar,我是否应该使用一个通用的globar变量,并对其进行回放?像下面这样吗?
是的,您可以这样做,因为snackbar是在您的类中多次使用的。因此,最好宣布它是全球性的。
在developer.android.com上查看快餐店的更多细节
发布于 2022-07-11 12:11:10
拥有全局SnackBar并确保在onDestroyView()中关闭它是一种很好的方法。
我建议将片段XML布局包装在CoordinatorLayout中,并将片段根视图传递给Snackbar.make函数,如下所示:
fragment_your_fragment.xml
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Your Layout Content -->
</androidx.coordinatorlayout.widget.CoordinatorLayout>YourFragment.kt
fun showSnackbar() {
Snackbar.make(requireView(), "Your message", Snackbar.LENGTH_INDEFINITE).show()
}这样,当您打开另一个片段(将它添加到堆栈中)时,Snackbar将被自动排除
https://stackoverflow.com/questions/35860795
复制相似问题