Quickblox(Android) - QBUser.getTags()。getItemsAsStringOrNull()始终返回null

时间:2016-05-14 15:01:42

标签: android quickblox

第一次提出问题,请原谅我的任何疏忽......

我正在成功将用户登录到Quickblox聊天服务(用户进行身份验证并无问题地登录)但是当我尝试检索当前用户的标签时,我总是在logcat中获取null。但是,我在预期的logcat中获得用户的登录信息。

我正在通过QuickBlox管理页面添加标签,它们在那里可见。

这是我的方法,任何帮助将不胜感激:

代码

public static void GetUserTags(QBUser user) {

        StringifyArrayList<String> tags = user.getTags();
        Log.i("User Login", user.getLogin());
        Log.i("User Tags", "" + tags.getItemsAsStringOrNull());

    }

更新

我正在使用Android Studio 2.1.1,根据Quickblox文档,我首先创建一个新的QBUser对象,传递用户名和密码参数(如下所示)。我将此对象存储为名为“user”的公共静态QBUser:

public static QBUser user;
[...]
user = new QBUser(username, password);

然后我创建一个新会话,传递上面创建的用户对象:

QBAuth.createSession(user, new QBEntityCallback<QBSession>() {
        @Override
        public void onSuccess(QBSession session, Bundle params) {
            GetUserTags();
        }

        @Override
        public void onError(QBResponseException errors) {
        }
}

我还扩展了GetUserTags()方法以查看我实际获得了多少信息:

public static String GetUserTags() {

    StringifyArrayList<String> tags = user.getTags();
    Log.i("User", "Login: " + user.getLogin());
    Log.i("User", "Password: " + user.getPassword());
    Log.i("User", "Email: " + user.getEmail());
    Log.i("User", "FullName: " + user.getFullName());
    Log.i("User", "Id: " + String.valueOf(user.getId()));
    Log.i("User", "Tags: " + String.valueOf(tags));
    Log.i("User", "Tags: " + user.getTags().getItemsAsStringOrNull());

    return user.getLogin();

}

我只返回用户名和密码的值......

在我的回复的这一点上,我意识到我只是在检索我已经提供过的价值......我很高兴!

回到绘图板......

1 个答案:

答案 0 :(得分:1)

所以,我在这里解决了这个问题。我没有尝试在成功创建会话后从QBUser用户获取所有值,而是添加了一个GetUser方法:

private static void GetUser(int userID) {
    QBUsers.getUser(userID, new QBEntityCallback<QBUser>() {
        @Override
        public void onSuccess(QBUser qbUser, Bundle bundle) {
            user = qbUser;
            GetUserTags();
        }

        @Override
        public void onError(QBResponseException e) {

        }
    });
}

这将我的公共静态QBUser对象设置为服务器的对象。

然后我在QBAuth.createSession()的onSuccess回调中调用该方法,如下所示:

QBAuth.createSession(user, new QBEntityCallback<QBSession>() {
    @Override
    public void onSuccess(QBSession session, Bundle params) {
        GetUser(session.getUserId());
    }

    @Override
    public void onError(QBResponseException errors) {
    }
}

这是一个明显的错误,但我忽略了一个错误。