#java #firebase #android-studio #firebase-realtime-database
#java #firebase #android-studio #firebase-realtime-database
Вопрос:
public void onSave(MenuItem item) {
if (validate()) {
Map<String, Object> value = new HashMap<>();
value.put("Name", tvName.getText().toString());
value.put("Number", Number.wildcardsViewToDb(tvNumber.getText().toString()));
if(checkBoxRule.isChecked()) {
value.put("Allow", 0);
}
else {
value.put("Allow", 1);
}
/*ContentValues value = new ContentValues();
value.put(Number.NAME, tvName.getText().toString());
value.put(Number.NUMBER, Number.wildcardsViewToDb(tvNumber.getText().toString()));
if(checkBoxRule.isChecked()) {
value.put(Number.ALLOW, 0);
}
else {
value.put(Number.ALLOW, 1);
}
*/
firebaseDatabase = FirebaseDatabase.getInstance().getReference();
DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
boolean connected = snapshot.getValue(Boolean.class);
if (connected) {
Log.d(TAG, "connected");
} else {
Log.d(TAG, "not connected");
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Log.w(TAG, "Listener was cancelled");
}
});
DatabaseReference block_numberRef = FirebaseDatabase.getInstance().getReference("Block_numbers");
block_numberRef.push().setValue(value);
Toast.makeText(this, R.string.block_number_saved, Toast.LENGTH_SHORT).show();
Я следил за всеми сообщениями о базе данных firebase в реальном времени.
Однако это не сохраняет значение в базе данных.
они сохраняются в локальной базе данных, но не работают в базе данных firebase в реальном времени.
Интересно, в чем проблема.
Я создаю приложение для Android, используя язык Java и Android studio.
Комментарии:
1.
setValue(value)
возвращает задачу, к которой вы можете прикрепить прослушиватель завершения . При успешном завершении сообщите, что номер блока был сохранен, а при ошибке запишите / запишите сообщение об ошибке. Если ошибка, которую вы получаете, все еще неясна, отредактируйте ее в этом вопросе.
Ответ №1:
Возможно, введите код, подобный этому, переместите хэш-карту ниже ссылки на базу данных и не нужно .push()
DatabaseReference block_numberRef = FirebaseDatabase.getInstance().getReference("Block_numbers");
Map<String, Object> value = new HashMap<>();
value.put("Name", tvName.getText().toString())
value.put("Number", Number.wildcardsViewToDb(tvNumber.getText().toString()));
block_numberRef.setValue(value);