J'essaie de migrer un projet Parse vers Backendless. Par conséquent, je suis un tutoriel pour apprendre Backendless. Le tutoriel est de Samantha Squires, et c'est sur Youtube. Ce que je construis ici, c'est la possibilité d'ajouter 2 personnes en tant qu'ami. Je suis connecté en tant que testuser et je souhaite ajouter un ami à ma liste d'amis. Voici la méthode pour ajouter 2 amis en tant qu'ami dans Backendless. Je reçois le message d'erreur suivant:Backendless setWhereClause Data Query renvoie FATAL EXCEPTION erreur
E/AndroidRuntime: FATAL EXCEPTION: IntentService[AddFriendService]
java.lang.NoClassDefFoundError: java.util.Objects
at com.backendless.Persistence.find(Persistence.java:638)
at com.backendless.DataStoreFactory$1.find(DataStoreFactory.java:188)
at com.example.muhammadahsan.a27sam01.AddFriendService.addFriends(AddFriendService.java:121)
at com.example.muhammadahsan.a27sam01.AddFriendService.onHandleIntent(AddFriendService.java:90)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.os.HandlerThread.run(HandlerThread.java:61)
Ma méthode pour ajouter 2 personnes comme ami est:
private void addFriends (String firstUserName, String secondUserName){
Log.i("addFriendsMethod: ", "addFriendsMethod is Running");
DataQueryBuilder query = DataQueryBuilder.create();
query.setWhereClause(String.format("name = '%s' or name = '%s'", firstUserName, secondUserName));
Backendless.Persistence.of(BackendlessUser.class).find(query, new AsyncCallback<List<BackendlessUser>>() {
@Override
public void handleResponse(List<BackendlessUser> response) {
Log.i("Query Response:" , response.toString());
List<BackendlessUser> users = response;
if (users.size() !=2){
broadcastAddFriendFailure();
//That means we have more that one users or one of users wasn't found
} else {
BackendlessUser user1 = users.get(0);//First user
final BackendlessUser user2 = users.get(1);//Second user
//Update first user, adding second user as a friend.
updateFriendsList(user1,user2);
Backendless.UserService.update(user1, new AsyncCallback<BackendlessUser>() {
@Override
public void handleResponse(BackendlessUser user) {
//Now Update second user adding first user as a friend
updateFriendsList(user2, user);//user is the updated version of user1
Backendless.UserService.update(user2, new AsyncCallback<BackendlessUser>() {
@Override
public void handleResponse(BackendlessUser response) {
broadcastAddFriendSuccess();
}
@Override
public void handleFault(BackendlessFault fault) {
broadcastAddFriendFailure();
}
});
}
@Override
public void handleFault(BackendlessFault fault) {
broadcastAddFriendFailure();
}
});
}
}
@Override
public void handleFault(BackendlessFault fault) {
}
});
}
Je sais qu'il ya quelque chose de mal avec le
Backendless.Persistence.of(BackendlessUser.class).find(query, new AsyncCallback<List<BackendlessUser>>()
Parce que j'essayé pour tester la sortie de whereclause dans les journaux. Toute aide sera appréciée.
Bonjour Scadge! Merci beaucoup pour la réponse rapide une fois de plus. Encore une question rapide. Pourquoi je ne suis pas en mesure d'obtenir response.getData(), comme le tutoriel que je suis de Samantha, cela fonctionne. Mais pour moi, la réponse ne me donne que .get (int). Est-ce dû aux différences entre Backendless 3 et Backendless 4? S'il vous plaît noter que la réponse est ce que je reçois après avoir passé la query.setWhereClause. – JohnyHawkAhsan
@JohnyHawkAhsan exactement, c'est la différence entre Backendless 3 et 4: maintenant la méthode 'find()' retourne la liste java nativate, alors que précédemment elle renvoyait un wrapper 'BackendlessCollection'. C'est une simplification, en fait, puisque maintenant vous avez juste besoin d'un appel de méthode moins. – Scadge
Merci beaucoup @Scadge! – JohnyHawkAhsan