ParseObject在android中尝试更新/sve后未更新

ParseObject在android中尝试更新/sve后未更新,android,parse-platform,Android,Parse Platform,我试图在解析时检索表中的一行。我找到了objectId,但是当我尝试用新信息更新行时,什么也没有发生。任何帮助都将不胜感激。谢谢 mSaveAndNextSteps.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ParseQuery<SingleFactInfo> query = ParseQuery

我试图在解析时检索表中的一行。我找到了objectId,但是当我尝试用新信息更新行时,什么也没有发生。任何帮助都将不胜感激。谢谢

mSaveAndNextSteps.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ParseQuery<SingleFactInfo> query = ParseQuery.getQuery("Fact_Info");
            query.getInBackground(mEventObjectId, new GetCallback<SingleFactInfo>() {
                public void done(ParseObject fact, ParseException e) {
                    if (e == null) {
                        // Now let's update it with some new data. In this case, only cheatMode and score
                        // will get sent to the Parse Cloud. playerName hasn't changed.
                        fact.add("factDescriptiontwo", mEventDescription.getText().toString());
                        event.put("factDescription", mEventDescription.getText().toString());
                        event.saveInBackground(new SaveCallback() {
                            @Override
                            public void done(com.parse.ParseException e) {

                            }
                        });
                    }
                }

                @Override
                public void done(SingleFactInfo parseObject, com.parse.ParseException e) {
                    Intent goToFactLists = new Intent(CreateEventSectionTwo.this, EventList.class);
                    startActivity(goToFactLists);
                }
            });
        }
    });
mSaveAndNextSteps.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
ParseQuery=ParseQuery.getQuery(“事实信息”);
getInBackground(mEventObjectId,newgetcallback()){
公共无效完成(ParseObject事实,parsee异常){
如果(e==null){
//现在让我们用一些新的数据来更新它。在这种情况下,只有作弊模式和分数
//将被发送到解析云。playerName未更改。
添加(“factDescriptiontwo”,mEventDescription.getText().toString());
put(“factDescription”,mEventDescription.getText().toString());
event.saveInBackground(新的SaveCallback(){
@凌驾
public void done(com.parse.parsee){
}
});
}
}
@凌驾
public void done(SingleFactInfo parseObject,com.parse.parsee){
Intent goToFactLists=新的Intent(CreateEventSection2.this,EventList.class);
星际触觉(哥特艺术家);
}
});
}
});

因此,以下是对我有效的工作解决方案。使用objectId查询对象,然后在“完成”部分更新它

mSaveAndNextSteps.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ParseQuery<SingleFactInfo> query = new ParseQuery("Event_Info");
            query.getInBackground(mEventObjectId, new GetCallback<SingleFactInfo>() {
                public void done(ParseObject event, ParseException e) {
                    if (e == null) {
                        // Now let's update it with some new data. In this case, only cheatMode and score
                        // will get sent to the Parse Cloud. playerName hasn't changed.
                        Toast.makeText(getApplicationContext(), mYourEditText.getText().toString(), Toast.LENGTH_LONG).show();
                    }
                }

                @Override
                public void done(SingleFactInfo parseObject, com.parse.ParseException e) {
                    parseObject.put("eventDescription", mYourEditText.getText().toString());
                    parseObject.saveInBackground();
                    Intent goToFactsList = new Intent(YourApplication.this, EventList.class);
                    startActivity(goToFactsList);
                }
            });
        }
    });
mSaveAndNextSteps.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
ParseQuery查询=新的ParseQuery(“事件信息”);
getInBackground(mEventObjectId,newgetcallback()){
公共void完成(ParseObject事件,parsee异常){
如果(e==null){
//现在让我们用一些新的数据来更新它。在这种情况下,只有作弊模式和分数
//将被发送到解析云。playerName未更改。
Toast.makeText(getApplicationContext(),mYourEditText.getText().toString(),Toast.LENGTH_LONG).show();
}
}
@凌驾
public void done(SingleFactInfo parseObject,com.parse.parsee){
parseObject.put(“eventDescription”,mYourEditText.getText().toString());
parseObject.savenbackground();
Intent-goToFactsList=新的Intent(您的application.this、EventList.class);
startActivity(gotofcatslist);
}
});
}
});

这听起来可能很傻,但您有两个公共void done方法。第二个has@Override,所以它将是getInBackground完成时调用的方法。是的,我知道,我认为它也很奇怪。然而,当我尝试在没有第二个的情况下实现它时,我会得到一个错误,除非我实现它,否则这个错误不会消失。如果我试图在第二个“完成”中保存对象,它会给我一个空指针异常。因为第一个“完成”没有(at)重写,所以删除第二个“完成”,包括(at)重写将导致错误,即它缺少一个被重写的方法done(又称(at)Override public void done())。现在,您已经尝试过在第二次完成时保存它,它给出了一个nullpointer异常。我最好的猜测是,在您的保存代码中,仍然有一个错误被触发。也许“mEventDescription”为null,这将在对其调用.getText()时触发nullpointerexception。除非你有一个方便的nullpointer崩溃的errorlog/stacktrace,否则我无法确定:)我的朋友,你是个天才!首先,你是对的,我有一个太多的“完成”方法(在我急于找到解决方案时,我忘了我添加了一个作为测试)。其次,我的mEventDescription是空的,我通过举杯祝酒发现了这一点。现在开始工作,再次感谢通过对话形式提供的帮助,非常感谢!我将在下面发布我的解决方案。再次谢谢你!。不客气,尽情享受吧!:)