Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何以用户身份在Parse上存储和加载会话?_Java_Android_Session_Parse Platform - Fatal编程技术网

Java 我如何以用户身份在Parse上存储和加载会话?

Java 我如何以用户身份在Parse上存储和加载会话?,java,android,session,parse-platform,Java,Android,Session,Parse Platform,我目前正在为现有的IOS应用程序开发一个Android应用程序,所以使用Session对象在Parse上存储一些数据对我来说至关重要 至于创建和上传会话进行解析,我没有问题 public static void syncUser() { ParseUser.getCurrentUser().fetchInBackground(new GetCallback<ParseObject>() { @Override public void done(

我目前正在为现有的IOS应用程序开发一个Android应用程序,所以使用Session对象在Parse上存储一些数据对我来说至关重要

至于创建和上传会话进行解析,我没有问题

public static void syncUser() {
    ParseUser.getCurrentUser().fetchInBackground(new GetCallback<ParseObject>() {
        @Override
        public void done(ParseObject object, ParseException e) {
            if (e != null) {
                Log.d("", "SYNC ERROR");
                e.printStackTrace();
            }

            if (object != null) {
                syncSessions();
            }
        }
    });
}

private static void syncSessions() {
    ParseQuery<ParseSession> query = ParseQuery.getQuery(ParseSession.class);
    query.fromLocalDatastore();
    query.findInBackground(new FindCallback<ParseSession>() {
        @Override
        public void done(List<ParseSession> objects, ParseException e) {
            for (ParseSession session : objects) {
                fetchSession(session, null);
            }
        }
    });
}

public static void fetchSession(final ParseSession session, final OnResultCallback cb) {
    session.saveInBackground(new SaveCallback() {
        @Override
        public void done(ParseException e) {
            if (e != null) {
                if (cb != null)
                    cb.onResult(false);
                e.printStackTrace();
            } else {
                if (cb != null)
                    cb.onResult(true);
                ParseRelation<ParseSession> relation = ParseUser.getCurrentUser().getRelation("sessions");
                relation.add(session);
                syncUser();
            }
        }
    });
}

public static void addNewSession(Date date, String link, int successValue) {
    final ParseSession session = new ParseSession();
    session.put("date", date);
    session.put("link", link);
    session.put("successValue", successValue);
    session.pinInBackground(new SaveCallback() {
        @Override
        public void done(ParseException e) {
            if (e != null)
                e.printStackTrace();
            else {
                fetchSession(session, new ParseManager.OnResultCallback() {
                    @Override
                    public void onResult(boolean success) {
                        if (success) {
                            try {
                                session.unpin();
                            } catch (ParseException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                });
            }
        }
    });
}

public interface OnResultCallback {
    void onResult(boolean success);
}
IOS上非常相似的代码可以很好地处理“会话”关系。我犯了什么错误


UPD。我注意到,只有在allready使用addNewSession()发送一些自定义创建的会话进行解析,然后尝试使用getSessions()获取会话时,才会出现此异常。也许创建和发送会话是问题所在?

我找到了解决方案。将新创建的会话添加到与的用户关系后

ParseRelation<ParseSession> relation = ParseUser.getCurrentUser().getRelation("sessions");
relation.add(session);
parserelationrelation=ParseUser.getCurrentUser().getRelation(“会话”);
关系。添加(会话);

我试图用fetchInBackground来拯救他们,这是个错误。我将syncUser()更改为ParseUser.getCurrentUser().saveInBackground(),一切正常。

我找到了解决方案。将新创建的会话添加到与的用户关系后

ParseRelation<ParseSession> relation = ParseUser.getCurrentUser().getRelation("sessions");
relation.add(session);
parserelationrelation=ParseUser.getCurrentUser().getRelation(“会话”);
关系。添加(会话);
我试图用fetchInBackground来拯救他们,这是个错误。我将syncUser()改为ParseUser.getCurrentUser().saveInBackground(),一切正常

ParseRelation<ParseSession> relation = ParseUser.getCurrentUser().getRelation("sessions");
relation.add(session);