无法在Android中更新ParseUser

无法在Android中更新ParseUser,android,parse-platform,Android,Parse Platform,fafaapplication.sUserI可以保存新用户,但无法更新现有用户 请注意,mUser是通过mUser=ParseUser.getCurrentUser在CreateView上设置的 这是我的密码: public void updateProfile() { if (validateFields()) { // i know i should only save if the values are new, but I'd like to get this w

fafaapplication.sUserI可以保存新用户,但无法更新现有用户

请注意,mUser是通过mUser=ParseUser.getCurrentUser在CreateView上设置的

这是我的密码:

public void updateProfile() {
    if (validateFields()) {
        // i know i should only save if the values are new, but I'd like to get this working first
        mUser.put("name", "new name");
        mUser.setEmail("new email");

        final ParseFile file = new ParseFile("profile.jpg", mPhotoData);
        file.saveInBackground(new SaveCallback() {
            @Override
            public void done(ParseException e) {
                if(e == null) {
                    mUser.put("profileImage", file);

                    mUser.saveInBackground(new SaveCallback() {
                        @Override
                        public void done(ParseException e) {
                            // successful
                            if (e == null) {
                                ((EditProfileActivity) getActivity()).endActivity();
                                Toast.makeText(getActivity().getApplicationContext(), getString(R.string.parse_profile_updated), Toast.LENGTH_SHORT).show();
                            }
                            // not successful
                            else {
                                Toast.makeText(getActivity().getApplicationContext(), "user " + getString(R.string.parse_try_again), Toast.LENGTH_SHORT).show();
                                e.printStackTrace();
                            }
                        }
                    });
                }
                else {
                    Toast.makeText(getActivity().getApplicationContext(), "file " + getString(R.string.parse_try_again), Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}
我从解析中获得以下堆栈跟踪:

W/System.err﹕ com.parse.ParseRequest$ParseRequestException: Parse::UserCannotBeAlteredWithoutSessionError
W/System.err﹕ at com.parse.ParseRequest.newPermanentException(ParseRequest.java:352)
W/System.err﹕ at com.parse.ParseRESTCommand.onResponseAsync(ParseRESTCommand.java:258)
W/System.err﹕ at com.parse.ParseRequest$3.then(ParseRequest.java:188)
W/System.err﹕ at com.parse.ParseRequest$3.then(ParseRequest.java:184)
W/System.err﹕ at bolts.Task$14.run(Task.java:796)
W/System.err﹕ at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
W/System.err﹕ at bolts.Task.completeAfterTask(Task.java:787)
W/System.err﹕ at bolts.Task.continueWithTask(Task.java:599)
W/System.err﹕ at bolts.Task.continueWithTask(Task.java:610)
W/System.err﹕ at bolts.Task$12.then(Task.java:702)
W/System.err﹕ at bolts.Task$12.then(Task.java:690)
W/System.err﹕ at bolts.Task$14.run(Task.java:796)
W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
W/System.err﹕ at java.lang.Thread.run(Thread.java:856)

我不知道为什么我不能保存用户。为什么会话需要更改才能保存用户?如何防止这种情况发生,或者如何根据我的saveInBackground结果更新会话?

听起来您需要在保存前调用logIn,如果是返回用户,该怎么办?我是否应该存储他们的用户名和密码字符串以再次调用登录?编辑-我可以更新用户。它只有在我登录、安装一个新的apk(由于测试没有),然后尝试更新配置文件时才会中断。这听起来像是应用商店版本之间的问题,对吧?听起来像是。也许你需要检测到版本更改,让用户重新登录。这是非常不幸的。是否每个人都有这个问题,或者你认为这是我做的不对,因为你可能不看我的代码就无法判断。我正在使用parse login开发一个应用程序,但我认为除了在登录时,我不会保存用户。根据您在代码中的注释,只有在发生更改时进行保存,才能减轻很多问题。您可以将其与ParseUser.isAuthenticated结合使用,以查看是否需要提示登录,并且可能不太频繁。