解析教程出现问题(Android)

5
我正在尝试使用Parse编写安卓应用程序。我正在按照此链接上的教程进行操作:https://www.parse.com/docs/android_guide 虽然这个教程相当简单明了,但是我在查询Parse数据库时遇到了问题。具体部分请参考以下链接:https://www.parse.com/docs/android_guide#objects-retrieving 相关部分的代码:
ParseQuery<ParseObject> query = ParseQuery.getQuery("GameScore");
query.getInBackground("xWMyZ4YEGZ", new GetCallback<ParseObject>(){ 
    public void done(ParseObject object, ParseException e){ 
        if (e == null){ 
        // object will be your game score 
        } else { 
        // something went wrong 
        } 
    } 
});

我正在使用Android Studio 1.0.1,我遇到的错误是:
“派生自GetCallback的匿名类必须声明为抽象或实现GetCallback中的抽象方法'done(T,ParseException)'”
如果您有任何帮助或建议解决此问题,将不胜感激。谢谢。
编辑:
事实证明,问题只是我的Parse.com数据库出了某些问题...创建一个新的数据库可以解决它,但我现在有另一个问题:我可以在“done”函数内调试,并且对象包含了所有信息,但我无法在该函数外提取它。如何解决?谢谢。

如果将@Override添加到“done”方法中,会发生什么? - mkobit
在GetCallback上出现了相同的错误,但是在@Override上它说:方法不会覆盖其超类的方法。 - David
你想在 done 函数中调试什么?是对象吗? - Kiloreux
不,我在done函数中进行了调试,以查看“object”是否包含任何信息,它确实包含了信息,但是我希望这些信息(或对象)在done函数之外。 - David
我的IDE没有导入com.parse.ParseException,导致出现了同样的错误,希望这能帮助其他人。 - ElliotM
2个回答

2

我也遇到了同样的错误。在我的情况下,我自动导入了错误的库:

import java.text.ParseException;

替代

import com.parse.ParseException;

只需检查您的导入。


0

我认为这是不可能的。done函数是在查询完成时的回调方法。如果您调试代码,您会注意到它跳过该函数,因为它是异步调用的,这意味着应用程序不会等待它完成。

一旦查询返回,您应该检查是否有错误,然后在检索解析对象后执行所需操作。


那么我该如何在等待从Parse检索到对象或稍后检索它之间进行选择?我觉得Parse网站在这方面有点缺失,还是我忽略了什么 - 我尽可能地按照上面链接的文档进行操作。 - David
对于每个函数,通常都有相应的同步方法,例如findInBackground(检查解析实际格式)。不建议使用同步方法,因为在等待查询完成时,您的UI将会冻结。我不确定您所说的“稍后检索”的意思。您可以在回调函数(done)中检索数据,然后在done函数内对其进行任何操作。我想您想要在done函数外执行的任何操作都可以在其中执行。 - JayDev
我无法在done函数内做任何想做的事情。比如说,我想改变一个textView,使其等于对象中存储的字符串值。现在,通过调试,我可以看到对象确实包含该字符串,但我无法提取它 - 我无法让done函数更改textView属性。这就是为什么我想从done函数中提取对象,因为在done函数外部,我可以随意进行textView更改。 - David
可以的。我建议你去查看上下文并在特定情况下检索它们。 - JayDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接