Snackbar回调onDismiss()首先调用

时间:2016-12-31 07:14:08

标签: android callback listener snackbar

我已将回调定义为处理snackbar dismiss()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

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

1 个答案:

答案 0 :(得分:0)

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