2015-01-17 3 views
5

Я пытаюсь использовать Parse для программирования приложения для Android. Я следую руководству по этой ссылке: https://www.parse.com/docs/android_guideПроблема с учебником по парсе (Android)

Хотя руководство/руководство довольно прямолинейно, у меня возникла проблема с запросом к базе данных анализа. Специфическая часть руководства является: 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 'должен быть либо объявлен абстрактным, либо реализовать абстрактный метод' done (T, ParseException) в GetCallback

Любая помощь или предложения о том, как решить эту проблему, были бы весьма благодарны, спасибо.

EDIT:

Оказывается, это была только моя база данных по Parse.com, что каким-то образом поврежден ... Создание новой базы данных установил ее, по какой-либо причине. Однако у меня есть другая проблема. Я могу отлаживать внутри сделанной функции, и объект содержит всю информацию. Однако я не могу извлечь его за пределы сделанной функции. Как это делается? Благодарю.

+0

Что произойдет, если вы добавите '@ Override' в метод' done'? – mkobit

+0

Такая же ошибка на GetCallback, но на @Override она говорит: метод не переопределяет метод из своего суперкласса – David

+0

Что вы хотите отлаживать в проделанной функции, объекте? – Kiloreux

ответ

0

Я не думаю, что это возможно. выполненная функция - это метод обратного вызова, когда запрос завершен. Если вы отлаживаете свой код, вы заметите, что он выполняет функцию, потому что он называется асинхронно, что означает, что приложение не будет ждать его завершения.

Как только запрос возвращается, вы должны проверить, была ли ошибка, а затем выполнить все, что вам нужно, после того, как вы извлекли объект синтаксического анализа.

+0

Тогда как мне дождаться, когда объект будет извлечен из Parse или получить его позже ? Я чувствую, что сайт Parse немного ускользает от этого, или я его не замечаю - я попытался как можно ближе следовать приведенной выше документации. – David

+0

Для каждой функции существует соответствующий синхронный метод. Найди findInBackground (проверьте синтаксический анализ фактического формата). Его не рекомендуется использовать синхронные методы, так как ваш пользовательский интерфейс замерзнет, ​​пока он ждет завершения запроса. Я не уверен, что вы подразумеваете под «получить позже». Вы извлекаете данные в функцию обратного вызова (выполняете), затем выполняете все, что хотите, внутри выполняемой функции.Я предполагаю, что все, что вы хотели сделать за пределами сделанной функции, может быть сделано внутри него. – JayDev

+0

Я не могу делать то, что хочу делать внутри сделанной функции. Скажем, я хочу изменить textView так, чтобы он был равен строковому значению, хранящемуся внутри объекта. Теперь, я могу видеть, отлаживая, что объект действительно содержит строку, я просто не могу ее извлечь - я не могу заставить проделанную функцию изменять свойства textView. Вот почему я хотел извлечь объект из сделанной функции, потому что вне функции done я все равно могу изменить textView. – David

3

У меня такая же ошибка. В моем случае я авто импортируемого неправильно библиотеки:

import java.text.ParseException; 

вместо

import com.parse.ParseException; 

Просто проверить импорт.

Смежные вопросы