我正在尝试从SDK网站https://docs.pusher.com/chatkit实现Pusher ChatKit。我宁愿将代码完全保留在Java中。
在示例中,有以下代码块:
chatManager.connect { result ->
when (result) {
is Result.Success -> {
// We have connected!
currentUser = result.value // CurrentUser
}
is Result.Failure -> {
// Failure
handleConnectionError(result.error)
}
}
}
但是,以上代码是用Kotlin编写的。在我自己的代码中,即使mCurrentUser
方法运行后,chatManager.connect
也为空。
我已将Android Studio升级为运行Java 8,并且尝试使用以下代码:
chatManager.connect(result -> {
if (result instanceof Result.Success) {
mCurrentUser = ((Result.Success<CurrentUser, Error>) result).getValue();
}
if (result instanceof Result.Failure) {
System.out.print(result);
}
return Unit.INSTANCE;
});
当我逐步使用调试器时,将跳过整个块。 connect方法记录成功的连接,但是result
始终为null
。有人可以告诉我如何使用侦听器编写相同的回调吗?或者,让我看看我的lambda表达式问题。
顺便说一下,chatManager.connect
将Function1<? super Result<CurrentUser, Error> Unit> callback
作为参数。提前致谢。我已经坚持了两天。