У меня есть фрагмент, когда начинается мой Фрагмент, мне нужно запросить базу данных реального времени в базе данных firebase. Я добавляю код подключения базы данных непосредственно при запуске метода onCreate, я все равно получаю null при печати тоста.Извлечь данные из базы данных при создании класса
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View r = inflater.inflate(R.layout.friends, container, false);
FirebaseAuth mAuth = FirebaseAuth.getInstance();
FirebaseUser user = mAuth.getCurrentUser();
FirebaseDatabase db = FirebaseDatabase.getInstance();
String userEmail = user.getEmail();
DatabaseReference userDetails = db.getReference("users").child(userEmail);
userDetails.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
myUser = dataSnapshot.getValue(User.class);
postCount = myUser.getTotalPosts();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Toast.makeText(getActivity(), "jjjjj " + postCount, Toast.LENGTH_SHORT).show();
Так что я сделал, я попробовал оборачивать все соединения с базой данных и получить код в статическом блоке, так как это должно работать первым, когда класс создается
static{
// everything in here from above code excluding the toast
}
Затем я попытался печати postCount снова внутри onCreateView()
, но все равно получите тот же результат, когда postCount имеет значение
Как преодолеть это?
благодаря
PS Я уверен, что узел я прослушивает существует в базе данных
Очевидно, что вы должны использовать это значение, когда установлено. Очевидно, что он установлен внутри ondatachange – Selvin