自己的应用程序无限加载Quickblox

时间:2017-09-05 17:04:27

标签: java android android-activity nullpointerexception quickblox

我做了一个像这个教程的Android应用程序: [ax.text我可以在没有任何问题的情况下注册和登录,但在登录后,它会永远停留在屏幕上,并且#34;正在加载"并且它不会打开下一个我可以开始与其他用户聊天的活动。安卓监视器说:

  

致命的例外:主要                                                                              处理:com.example.georg.chatapp,PID:31740                                                                              java.lang.NullPointerException:尝试调用虚方法   ' java.lang.String com.quickblox.users.model.QBUser.getLogin()'在...上   null对象引用                                                                                  在   com.example.georg.chatapp.ListUsersActivity $ 4.onSuccess(ListUsersActivity.java:160)                                                                                  在   com.example.georg.chatapp.ListUsersActivity $ 4.onSuccess(ListUsersActivity.java:149)

以下是链接到的代码:

private void retrieveAllUsers() {

        QBUsers.getUsers(null).performAsync(new QBEntityCallback<ArrayList<QBUser>>() {
            @Override
            public void onSuccess(ArrayList<QBUser> qbUsers, Bundle bundle) {

                //add cache
                QBUsersHolder.getInstance().putUsers(qbUsers);


                ArrayList<QBUser> qbUserWithoutCurrent = new ArrayList<QBUser>();
                for (QBUser user : qbUsers)
                {
                    if (!user.getLogin().equals(QBChatService.getInstance().getUser().getLogin()))
                        qbUserWithoutCurrent.add(user);
                }

                ListUsersAdapter adapter = new ListUsersAdapter(getBaseContext(),qbUserWithoutCurrent);
                lstUsers.setAdapter(adapter);
                adapter.notifyDataSetChanged();
            }

            @Override
            public void onError(QBResponseException e) {
                Log.e("ERROR",e.getMessage());

            }
        });
    }

用户登录:

private void createSessionForChat() {
        final ProgressDialog mDialog = new ProgressDialog(ChatDialogsActivity.this);
        mDialog.setMessage("Verbindung wird hergestellt");
        mDialog.setCanceledOnTouchOutside(false);
        mDialog.show();

        String user,password;
        user = getIntent().getStringExtra("user");
        password = getIntent().getStringExtra("password");

        final QBUser qbUser = new QBUser(user,password);
        QBAuth.createSession(qbUser).performAsync(new QBEntityCallback<QBSession>() {
            @Override
            public void onSuccess(QBSession qbSession, Bundle bundle) {
                qbUser.setId(qbSession.getUserId());
                try {
                    qbUser.setPassword(BaseService.getBaseService().getToken());
                } catch (BaseServiceException e) {
                    e.printStackTrace();
                }

                QBChatService.getInstance().login(qbUser, new QBEntityCallback() {
                    @Override
                    public void onSuccess(Object o, Bundle bundle) {
                        mDialog.dismiss();
                    }

                    @Override
                    public void onError(QBResponseException e) {
                        Log.e("ERROR",""+e.getMessage());

                    }
                });
            }

            @Override
            public void onError(QBResponseException e) {

            }
        });
    }

我希望你知道如何解决它。我使用QuickBlox作为服务器。 当我按下&#34;返回&#34;按钮,当它使用浮动按钮加载下一个活动时会出现几秒钟,然后它会崩溃。

1 个答案:

答案 0 :(得分:0)

这是因为没有用户登录聊天(可能是登录到REST而不是聊天)。在您的情况下,您需要在加载用户之前登录聊天,因为它使用QBChatService.getInstance().login(qbUser); qbUser - 带有id,登录名和密码的QBUser。