首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在碎片销毁时解散活跃的快餐店

在碎片销毁时解散活跃的快餐店
EN

Stack Overflow用户
提问于 2016-03-08 06:46:48
回答 2查看 2.9K关注 0票数 6

如何确保一旦碎片被销毁,任何可见的Snackbar (特别是带有snackbar.length_indefinite的)都会被清除?

对于所有的Snackbar,我是否应该使用一个通用的globar变量,并对其进行回放?像下面这样吗?

Fragment1.java

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2016-03-08 06:55:28

如何确保一旦碎片被销毁,任何可见的Snackbar (特别是带有snackbar.length_indefinite的)都会被清除?

若要拒绝此操作,请将其称为onDestroy();方法,就像您所做的一样。

对于所有的Snackbar,我是否应该使用一个通用的globar变量,并对其进行回放?像下面这样吗?

是的,您可以这样做,因为snackbar是在您的类中多次使用的。因此,最好宣布它是全球性的。

developer.android.com上查看快餐店的更多细节

票数 5
EN

Stack Overflow用户

发布于 2022-07-11 12:11:10

拥有全局SnackBar并确保在onDestroyView()中关闭它是一种很好的方法。

我建议将片段XML布局包装在CoordinatorLayout中,并将片段根视图传递给Snackbar.make函数,如下所示:

fragment_your_fragment.xml

代码语言:javascript
复制
<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

代码语言:javascript
复制
fun showSnackbar() {
    Snackbar.make(requireView(), "Your message", Snackbar.LENGTH_INDEFINITE).show()
}

这样,当您打开另一个片段(将它添加到堆栈中)时,Snackbar将被自动排除

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35860795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档