J'ai le tableau suivant avec un PrimaryKey
dedans. J'ai inséré quelques valeurs dans la table. Maintenant, j'ai besoin de mettre à jour une valeur particulière dans une ligne particulière. J'ai une rangée avec gameType
comme Puzzle
et j'ai besoin de mettre à jour le currentLevel
dans la rangée. Mais je ne suis pas capable d'y parvenir.Comment mettre à jour une ligne particulière dans la table de domaine android
GamesDetails
table:
public class GamesDetail extends RealmObject {
@PrimaryKey
private String gameType;
private int currentLevel;
private int totalLevel;
private int totalCoins;
private int currentBadge;
public String getGameType() {
return gameType;
}
public void setGameType(String gameType) {
this.gameType = gameType;
}
public int getCurrentLevel() {
return currentLevel;
}
public void setCurrentLevel(int currentLevel) {
this.currentLevel = currentLevel;
}
public int getTotalLevel() {
return totalLevel;
}
public void setTotalLevel(int totalLevel) {
this.totalLevel = totalLevel;
}
public int getTotalCoins() {
return totalCoins;
}
public void setTotalCoins(int totalCoins) {
this.totalCoins = totalCoins;
}
public int getCurrentBadge() {
return currentBadge;
}
public void setCurrentBadge(int currentBadge) {
this.currentBadge = currentBadge;
}
}
Voici ce que j'ai essayé de mettre à jour une ligne particulière dans le tableau:
final GamesDetail puzzleGameDetail = realm.where(GamesDetail.class).equalTo("gameType","Puzzle").findFirst();
final int[] nextLevel = {puzzleGameDetail.getCurrentLevel()};
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
puzzleGameDetail.setCurrentLevel(++nextLevel[0]);
realm.copyToRealmOrUpdate(puzzleGameDetail);
}
}, new Realm.Transaction.OnSuccess() {
@Override
public void onSuccess() {
Log.e(TAG, "Done");
}
}, new Realm.Transaction.OnError() {
@Override
public void onError(Throwable error) {
Log.e(TAG,error.getMessage());
}
});
Mais la valeur ne reçoit pas mis à jour et je reçois ce message d'erreur suivant :
Realm access from incorrect thread. Realm objects can only be accessed on the thread they were created.
Comment puis-je mettre à jour une valeur particulière dans une ligne particulière du tableau?
Merci. Ça a marché. – XoXo