данные не сохраняются в базе данных firebase в реальном времени

#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);