android - snackbar : how to identify which snackbar is shown

标签 android android-snackbar

我有一个实现 swipetorefresh 布局的 recyclerview - 如果您在列表中向下滑动手指,它将加载较新的帖子。它还有一个 onloadmorelistener 用于对我的 recyclerview 进行分页 - 如果您在 recyclerview 上滑动手指,它将加载较旧的帖子。

我正在尝试构建一个 snackbar 通知,如果用户离线并且他试图完成某种类型的网络 Activity ,比如加载旧的或新的帖子,snackbar 会出现告诉他没有互联网。

在没有互联网且用户在回收站 View 上向上和向下滑动的情况下,会显示两个显示相同“无互联网”消息的 snackbar 通知。实际上,我只想显示一个。

因此,我正在寻找一些独特的方法来识别显示在 snackbar 中的文本,这样如果两个 snackbar 中的文本相同,则只显示一个 snackbar 但没有 getText() 方法在 snackbar 中并且只有 setText(): http://developer.android.com/intl/es/reference/android/support/design/widget/Snackbar.html

我还看到有回调方法:http://developer.android.com/intl/es/reference/android/support/design/widget/Snackbar.Callback.html但在我的场景中,这些似乎都没有帮助。

我希望在创建 snackbar 时可以给它一个独特的标志以供识别,但 Snackbar.make 方法不允许这样做。

有没有人成功解决过类似的问题?

最佳答案

使用 snackbar 回调。例如,当它显示时将其添加到列表中,然后在调用回调时将其删除,因此您只有仍然可见的 snackbar 。回调示例:

snackbar.setCallback(new Snackbar.Callback() {

    @Override
    public void onDismissed(Snackbar snackbar, int event) {
      //see Snackbar.Callback docs for event details
      ...  
    }

    @Override
    public void onShown(Snackbar snackbar) {
       ...
    }
  });

关于android - snackbar : how to identify which snackbar is shown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34547137/

相关文章:

android - Material Design 排版和 Snackbars

android - 应用中心构建 : error CS0103: The name 'Android' does not exist in the current context

java - 大图像的 Android OutOfMemoryError

android - 突出显示选定的微调项

android - 如何制作可滚动的 ListView 但不填满整个屏幕?

Flutter 在底页顶部显示 Snackbar

android - 当 snackbar 动画开始时, float Action 按钮会上下跳跃

Android - Activity 之间的 Snackbar

android - Snackbar 动画 android

Android 捕获照片 putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(photoFile));数据为空