首先调用 Snackbar 回调 onDismiss()

Posted

技术标签:

【中文标题】首先调用 Snackbar 回调 onDismiss()【英文标题】:Snackbar callback onDismiss() called first 【发布时间】:2017-05-15 08:22:43 【问题描述】:

我已经定义了处理snackbardismiss()show()的回调。

   Snackbar snackbar = Snackbar.make(rootView, message, Snackbar.LENGTH_LONG);
   View snackBarView = snackbar.getView();
   snackBarView.setBackgroundColor(Color.argb(255, 8, 20, 37));
   snackbar.setCallback(new Snackbar.Callback() 
                @Override
                public void onShown(Snackbar snackbar) 
                    super.onShown(snackbar);
                    Debug.e(TAG, "Shown");
                

                @Override
                public void onDismissed(Snackbar snackbar, int event) 
                    super.onDismissed(snackbar, event);
                    Debug.e(TAG, "Dismissed");
                
            );
            snackbar.show();

但是当我检查我的 Logcat 时,onDismiss()onShown() 之前调用

 12-31 12:36:29.601 2883-2883/BaseFragment: Dismissed
 12-31 12:36:29.880 2883-2883/BaseFragment:    Shown

那么我做错了吗?有什么想法吗?

【问题讨论】:

我测试过效果很好:) 设计库版本是多少? 支持设计库版本为23.4.0 @Jaymin Panchal 所以你看不到它吗? 你想快速显示多次吗? 【参考方案1】:

这可能是因为另一家小吃店正在取代这家。在这种情况下,onDismissed() 将被调用为较早的和onShown() 为新的。在您的日志中,您还应该看到每种方法正在调用哪个小吃店。您还可以检查调用onDismissed() 的事件。如果为 4,则表示已因被其他小吃店取代而被解雇。 希望对您有所帮助!

【讨论】:

以上是关于首先调用 Snackbar 回调 onDismiss()的主要内容,如果未能解决你的问题,请参考以下文章

来自另一个片段的 Snackbar 回调

如何在 EventChannel.listen 的回调 onEvent 中显示 SnackBar

Android - 活动之间的 Snackbar

从 AlertDialog 中调用 SnackBar

Snackbar.setCallback() 在 Android AppCompat 中无法解析

从非 UI 线程调用 Snackbar.make() 是如何工作的?