您好我使用FireStore将数据存储在远程数据库中。但是,我在使用set和update方法时遇到了问题。
当我想更新某些文档中的某些值并在更新后显示对话框时,我的Android应用程序重启。下面是logcat,当我继续上面的过程时会显示它。
12-27 12:09:49.838 17014-17014/com.wecobell.www.doggy D/showUnlockDialog: OnSuccess
12-27 12:09:49.875 17014-17014/com.wecobell.www.doggy W/OpenGLRenderer: Points are too far apart 4.000001
12-27 12:09:49.908 17014-17014/com.wecobell.www.doggy D/MainActivity: onPause
12-27 12:09:49.930 17014-17014/com.wecobell.www.doggy D/MainActivity: ---- Network Status Check ----
12-27 12:09:49.932 17014-17014/com.wecobell.www.doggy D/MainActivity: Wifi Connection : true, 4G or 5G : false
12-27 12:09:49.943 17014-17014/com.wecobell.www.doggy D/MainActivity: onCreate
正如您所看到的,当showUnlockDialog'时,MainActivity会重新打开。已成功显示。我该如何解决这个问题?
/**
* 메소드명 : unlockProfile
* 설명 : Method that unlocks user's profile
*/
private void unlockProfile(final int position) {
FirebaseFirestore firestore = FirebaseFirestore.getInstance();
FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();
String currentUid = user.getUid();
FireStore.unlockInterestedUser(firestore, currentUid, interestedUsers.get(position).getUid());
}
/**
* 메소드명 : showUnlockDialog
* 설명 : Method that displays dialog.
*/
private void showUnlockDialog(final int position) {
MaterialDialog.Builder builder = new MaterialDialog.Builder(context);
builder.content("프로필을 보시려면 뼈다귀 포인트 5개가 필요합니다.")
.positiveText("적용")
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
FirebaseFirestore firestore = FirebaseFirestore.getInstance();
DocumentReference dc = FireStore.getPointOfUser(firestore, MyUser.getInstance().getUid());
FirebaseAuth fa = FirebaseAuth.getInstance();
FirebaseUser user = fa.getCurrentUser();
final DocumentReference me = FireStore.getUserInfo(firestore, user.getUid());
me.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
Log.d("showUnlockDialog", "OnSuccess");
MyUser user = documentSnapshot.toObject(MyUser.class);
int newPoint = user.getPoint() - 5;
user.setPoint(newPoint);
me.set(user).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d("showUnlockDialog", "unlockProfileMethod");
unlockProfile(position);
Toast.makeText(context, "업데이트 완료", Toast.LENGTH_SHORT).show();
}
});
}
});
}
})
.negativeText("취소")
.show();
}