2015-03-27 2 views
2

Я только что обновил с Parse 1.8.x до Parse 1.9.0 для Android. Я отслеживал некоторые изменения, которые они внесли, и обновил свой проект соответственно, но я получаю странную ошибку в нескольких местах, и я не уверен, что это лучший способ «исправить».Parse.com для Android: реализация GetCallback метода «done»

В нескольких местах я использую getInBackground для запроса объекта, где я знаю его objectId. Он работает нормально до этого обновления.

Теперь, я получаю сообщение об ошибке, которая говорит:

Error:(113, 80) error: is not abstract and does not override abstract method done(Object,Throwable) in ParseCallback2.

Итак, я попробовал писать базовый запрос и вызов getInBackground, и это то, что он дает мне с помощью автозаполнения:

ParseQuery query  = ParseUser.getQuery(); 
query.getInBackground("xxxx", new GetCallback() { 
    @Override 
    public void done(ParseObject parseObject, ParseException e) { 

    } 

    @Override 
    public void done(Object o, Throwable throwable) { 

    } 
}); 

Я привык видеть первый метод, но второй отключает меня. Я заметил, что Анализировать изменилось что-то, начиная с 1.8.3, отметив:

Fixed: Callbacks are no longer abstract classes, but interfaces.

Итак, я пошел к декларации за GetCallback (который является источником окурок генерируется из файла класса), который показывает, что это:

public interface GetCallback <T extends com.parse.ParseObject> extends com.parse.ParseCallback2<T,com.parse.ParseException> { 
    void done(T t, com.parse.ParseException e); 
} 

Не очень удивительно, так что я пошел в ParseCallback2 декларации (также источник окурок генерируется из файла класса), который показывает это:

interface ParseCallback2 <T1, T2 extends java.lang.Throwable> { 
    void done(T1 t1, T2 t2); 
} 

Исходя из этого, я думаю, я могу понять, почему компилятор жалуется, но я не уверен, что здесь правильное решение.

Я также получил некоторые сообщения в моем Gradle Построить вывод, что сказать:

Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Я не уверен, если это связано с этим вопросом или нет, и я не знаю, как выяснить, являются ли они Связанный.

В принципе, я думаю, что одна из двух вещей пошла не так. Либо: 1. У меня есть некоторые настройки в моем приложении, которые необходимо обновить, чтобы повторно включить старые функции, -OR-- 2. У парсера есть проблема с их новейшим API Android.

Это не кажется разумным решением, которое Анализировать фактически будет требовать, чтобы я переопределить 2 различныхdone методов в GetCallback. Кто-нибудь видел эту проблему и как ее преодолеть?

ответ

3

Попробуйте указать общий параметр следующим образом:

ParseQuery query  = ParseUser.getQuery(); 
query.getInBackground("xxxx", new GetCallback() { 

к

ParseQuery<ParseUser> query  = ParseUser.getQuery(); 
query.getInBackground("xxxx", new GetCallback<ParseUser>() { 
+0

'Оба метода имеют один и тот же стирание, но ни отменяет other' –

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