Я пытаюсь получить значение счетчика и устанавливаю его в качестве идентификатора модели, используя базу данных Firebase.
Соединение с базой данных работает и другие методы тоже.Теперь я пытаюсь не устанавливать вручную идентификатор своей модели каждый раз, когда мне нужно добавить новый элемент.
Проблема в том, что ValueEventListener, который должен получить идентификатор, не работает, что означает, что приложение не "вводит" этот фрагмент кода.
invia.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
final Data data = new Data();
FirebaseDatabase database2 = FirebaseDatabase.getInstance();
DatabaseReference myRef2 = database2.getReference("Counter/node");
myRef2.addValueEventListener(new ValueEventListener() {
@Override public void onDataChange(DataSnapshot dataSnapshot) {
Counter counter = dataSnapshot.getValue(Counter.class);
data.setId(String.valueOf(counter.getCnt_android() + 1));
}
@Override public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
data.setUser(user.getText().toString());
data.setPassword(password.getText().toString());
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("Information Android/");
myRef.child(data.getId()).setValue(data);
Counter cnt_android = new Counter();
cnt_android.setCnt_android(Integer.parseInt(data.getId()));
myRef2.child("cnt_android").setValue(cnt_android);
}
});
Я пробовалпоместив эти две строки:
data.setUser(user.getText().toString());
data.setPassword(password.getText().toString());
Внутри onDataChange, чтобы увидеть, если это проблема с получением значения счетчика, но не потому, что они остаются нулевыми, даже если я даю их из EditBoxes внутри приложения, поэтому яЯ начинаю думать, что есть проблема с этим конкретным кодом.
В этой строке происходит сбой приложения:
myRef.child(data.getId()).setValue(data);
, поскольку для идентификатора нет значения.