使用 MrEngineer13 的 SnackBar 库实现

Using MrEngineer13's SnackBar library implementation

我正在使用@MrEngineer13 的SnackBar implementation 并且想知道如何捕获 2 个单独的 "ActionClick" 事件 - 根据 actionclick 事件发生的时间,我需要做不同的事情。

建造者看起来像这样 -

new SnackBar.Builder(this)
.withOnClickListener(this)
.withMessage("This library is awesome!") // OR
.withMessageId(messageId)
.withTypeFace(myAwesomeTypeFace)
.withActionMessage("Action") // OR
.withActionMessageId(actionMsgId)
.withTextColorId(textColorId)
.withBackGroundColorId(bgColorId)
.withVisibilityChangeListener(this)
.withStyle(style)
.withDuration(duration)
.show();`

并且 onMessageClick 接受一个 "token" 参数 -

@Override
public void onMessageClick(Parcelable token) {
     }

我无法弄清楚的是,如何在点击发生时传递此 "token"。

depending on when the actionclick event occurs, I need to do different things

onMessageClick() 的正文中处理:

@Override
public void onMessageClick(Parcelable token) {
  if (shouldIDoX()) {
    doX();
  }
  else {
    doY();
  }
}

(您提供 shouldIDoX()doX()doY() 的相关实现。

What I am not able to figure out is, how to pass this "token" when the click happens

Builder 上有一个 withToken() 方法,您可以使用它来提供要传递给 onMessageClick()Parcelable。话虽这么说,JavaDocs 将其描述为 "The token used to restore the SnackBar state",这让我有点担心弄乱它。