Android firestore更新或设置方法会重新启动应用

时间:2017-12-27 03:17:44

标签: java android firebase google-cloud-firestore

您好我使用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();
}

0 个答案:

没有答案