2017-02-18 6 views
0

У меня есть ValueEventListener, и внутренний код никогда не достигается. Мое приложение проверяет подлинность, но я не могу получить данные, и я не уверен, что мне не хватает. В приведенном ниже коде, когда я проверяю, uid имеет правильное значение, и путь данных («Пользователи/[uid]») верен, но ни один из внутреннего кода в прослушивателе событий значения никогда не достигается. Я также попытался разместить слушателя прямо в корне, с тем же результатом.ValueEventListener никогда не вводится

Я установил Firebase, используя параметры меню, добавив в приложение как аутентификацию, так и базу данных Realtime; аутентификация работает нормально, поэтому мне интересно, нужно ли что-то еще настроить для базы данных в реальном времени? Я прочитал документацию и прошел множество примеров, но я не вижу ничего, что мне не хватает.

uid = FirebaseAuth.getInstance().getCurrentUser().getUid().toString(); 
    DatabaseReference userRef = ref.child("Users").child(uid).getRef(); 

    ValueEventListener userListener = new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      User user = dataSnapshot.getValue(User.class); 
      if (user == null) { 
       SettingsLoad(); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      Log.e("User", "User not found"); 
     } 
    }; 

    userRef.addListenerForSingleValueEvent(userListener); 
+0

Пожалуйста, не вызывайте '.getRef()' после 'child()'. Он не нужен и вызовет проблемы в какой-то момент (хотя это не является причиной вашей текущей проблемы). Просто: 'DatabaseReference userRef = ref.child (« Пользователи »). Child (uid);'. –

ответ

0

Попробуйте это! Я только что добавил еще условие и записываю или тост результаты!

uid = FirebaseAuth.getInstance().getCurrentUser().getUid().toString(); 
     DatabaseReference userRef = ref.child("Users").child(uid).getRef(); 

    ValueEventListener userListener = new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      User user = dataSnapshot.getValue(User.class); 
      if (user == null) { 
       SettingsLoad(); 
      } 
**else { 
Log.d("tag","User Found!"); 
}** 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      Log.e("User", "User not found"); 
     } 
    }; 

    userRef.addListenerForSingleValueEvent(userListener); 
Смежные вопросы