android - QUICKBLOX 尝试在空对象引用上调用虚拟方法 sendMessage

标签 android quickblox

我正在尝试在私有(private)对话中发送短信,在我创建私有(private)对话之前一切正常,但是当我发送短信时我收到此错误“尝试调用虚拟方法'void com.quickblox.chat.QBAbstractChat.sendMessage (com.quickblox.chat.model.QBChatMessage)' 在空对象引用上”

@Override
protected void onCreate(Bundle savedInstanceState) {

    final Context context = this;

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    QBSettings.getInstance().init(getApplicationContext(), APP_ID, AUTH_KEY, AUTH_SECRET);
    QBSettings.getInstance().setAccountKey(ACCOUNT_KEY);

    QBChatService.setDebugEnabled(true);
    final QBChatService chatService = QBChatService.getInstance();
    final QBUser qbUser = new QBUser("shahzeb", "shahzeb143");
    QBAuth.createSession(qbUser).performAsync(new QBEntityCallback<QBSession>() {
        @Override
        public void onSuccess(QBSession qbSession, Bundle bundle) {
            qbUser.setId(qbSession.getUserId());


            chatService.login(qbUser, new QBEntityCallback() {
                @Override
                public void onSuccess(Object o, Bundle bundle) {


                    final QBChatDialog dialog = DialogUtils.buildPrivateDialog(25024405);
                    QBRestChatService.createChatDialog(dialog).performAsync(new QBEntityCallback<QBChatDialog>() {
                        @Override
                        public void onSuccess(QBChatDialog qbChatDialog, Bundle bundle) {

                            QBChatMessage chatMessage = new QBChatMessage();
                            chatMessage.setSenderId(qbUser.getId());
                            chatMessage.setBody("Hi there!");
                            try {
                                dialog.sendMessage(chatMessage);
                            } catch (SmackException.NotConnectedException e) {
                                e.printStackTrace();
                            }
                        }

                        @Override
                        public void onError(QBResponseException e) {

                        }
                    });
                }

                @Override
                public void onError(QBResponseException e) {

                }
            });
        }

        @Override
        public void onError(QBResponseException e) {

        }
    });

}

最佳答案

您必须在“qbChatDialog”模型而不是“对话框”上调用方法 sendMessage(..),或者您必须使用 dialog.initForChat(QBChatService.getInstance()); 初始化“对话框”以进行聊天在发送消息之前。参见 QuickBlox documentation

关于android - QUICKBLOX 尝试在空对象引用上调用虚拟方法 sendMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42738236/

相关文章:

java - findViewById 来自不同的类

android - QuickBlox 通知 : push token disappears

Quickblox 错误 : You are not owner of this object on API call to PUT/users/

ios - 如何将这行代码转换为 swift 2.0?

android - firebase 访问 token 将在 4 到 5 小时后过期

java - 错误 :(52, 0) 未找到 Gradle DSL 方法:使用 Quickblox API 时为 'сompile()'

android - 我的 cordova webview 应用程序真的比同一部手机上的 android 浏览器慢

Android 对端未通过身份验证

android - 无法连接到 OpenCV 管理器

android - 如何使用 Dart 签署 Binance HTTP 请求