2015-01-17 13 views
5

Sto cercando di utilizzare Parse per programmare un'app Android. Sto seguendo il tutorial su questo link: https://www.parse.com/docs/android_guideProblemi con il tutorial Parse (Android)

Mentre il tutorial/guida è abbastanza semplice, sto avendo problemi con una query al database Parse. La parte specifica della guida è: https://www.parse.com/docs/android_guide#objects-retrieving

Codice da apposita sezione:

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 
     } 
    } 
}); 

Sto usando Android Studio 1.0.1, e l'errore sto ottenendo è:

Class ' La classe anonima derivata da GetCallback 'deve essere o dichiarata astratta o implementare il metodo astratto' done (T, ParseException) in GetCallback

Qualsiasi aiuto o suggerimento su come risolvere questo sarebbe molto apprezzato, grazie.

EDIT:

risulta era solo il mio database su Parse.com che è stato in qualche modo danneggiato ... La creazione di un nuovo database riparato, per qualsiasi motivo. Ho comunque un altro problema. Posso eseguire il debug all'interno della funzione done e l'oggetto contiene tutte le informazioni. Tuttavia, non posso estrarlo al di fuori della funzione done. Come è fatto? Grazie.

+0

Cosa succede se aggiungete '@ Override' al metodo' done'? – mkobit

+0

Lo stesso errore su GetCallback, ma su @Override dice: Il metodo non sovrascrive il metodo dalla sua superclasse – David

+0

Cosa vuoi eseguire il debug nella funzione done, l'oggetto ?? – Kiloreux

risposta

0

Non credo sia possibile. la funzione done è il metodo di callback per quando la query è stata completata. Se esegui il debug del tuo codice, noterai che passa alla funzione perché è chiamato in modo asincrono, il che significa che l'applicazione non aspetterà che si completi.

Una volta restituita la query, è necessario verificare se si è verificato un errore e quindi fare tutto ciò che è necessario una volta recuperato l'oggetto parse.

+0

Allora come faccio a farlo aspettare che l'oggetto venga recuperato da Parse o recuperarlo in seguito ? Mi sembra che il sito web di Parse stia saltando un po 'su questo, o lo sto ignorando - ho cercato di seguire la documentazione collegata sopra il più vicino possibile. – David

+0

Per ogni funzione tende ad esserci un metodo sincronico corrispondente, trovo findInBackground (controlla analizza il formato attuale). Non è consigliabile utilizzare i metodi sincroni mentre l'interfaccia utente si blocca mentre attende la fine della query. Non sono sicuro di cosa intendi con "recuperalo più tardi". Recuperate i dati nella funzione di callback (fatto), quindi fate ciò che volete all'interno della funzione done.Immagino che qualsiasi cosa tu voglia fare al di fuori della funzione done possa essere fatta al suo interno – JayDev

+0

Non riesco a fare tutto ciò che voglio fare all'interno della funzione done. Supponiamo di voler modificare una vista testo in modo che sia uguale a un valore di stringa memorizzato all'interno dell'oggetto. Ora, posso vedere attraverso il debug che l'oggetto contiene effettivamente la stringa, non riesco proprio ad estrarlo - Non posso fare in modo che la funzione done cambi le proprietà textView. Questo è il motivo per cui ho voluto estrarre l'oggetto dalla funzione done, perché al di fuori della funzione done posso comunque modificare il testo. – David

3

Ho ricevuto lo stesso errore. Nella mia libreria sbagliata caso ho auto importate:

import java.text.ParseException; 

invece di

import com.parse.ParseException; 

Basta controllare l'importazione.