Soru & Cevap

Firebase signout yaptıktan sonra state verisi almak istiyoru ...

11.08.2020 - 05:28

Firebase signout yaptıktan sonra state verisi almak istiyorum. Online offline icin. Menü item click ten signout yaptıktan sonra yazdığım state false kodu uygulamanın çökmesine neden oluyor. DatabaseReferance mRef = FirebaseDatabase.getInstance ().getReferance.child ("users").child ("state"); mRef.child ("state").setValue (false); Bu kodla state değerini true yapabiliyorum uygulamaya girişte. Fakat signout tan sonra bu kodu yazınca uygulama çöküyor. Bunun başka bir yolu mu var acaba. Lütfen yardımcı olur musunuz? Şimdiden teşekkürler.

7 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user gmyucalfarukeren
gmyucalfarukeren
22.02.2023 - 12:39

Merhaba Öner, Firebase Authentication'dan çıkış yaptıktan sonra, kullanıcının durumunu Firebase Realtime Database'de saklamak için DatabaseReference sınıfını kullanabilirsiniz. Ancak, uygulamanızın çökmesine neden olan sorunu anlamak için hatayı daha ayrıntılı bir şekilde incelemeniz gerekebilir

Çökme nedeni, muhtemelen mRef değişkeninin null olduğu durumdur. Bu, FirebaseDatabase.getInstance().getReference() işlevinin çağrısı sırasında hata oluştuğunda meydana gelebilir. Bunun nedeni, Firebase yapılandırmasının doğru yapılandırılmamış veya internet bağlantısının kesilmiş olması olabilir

Sorunu çözmek için, aşağıdaki kod örneğinde olduğu gibi mRef değişkeninin null olmadığından emin olun ve hata durumlarını ele alın

 

FirebaseAuth.getInstance().signOut();
DatabaseReference mRef = FirebaseDatabase.getInstance().getReference().child("users").child("state");
mRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            mRef.child("state").setValue(false);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.d(TAG, "onCancelled: " + databaseError.getMessage());
    }
});