Ошибка записи в firebase. Приложение продолжает падать - PullRequest
0 голосов
/ 25 августа 2018

Итак, я новичок в Android и Firebase. Я пытаюсь создать приложение для обмена сообщениями. Но как только я нажимаю кнопку отправки, мое приложение вылетает. Я точно знаю, где происходит сбой приложения. Это происходит сбой сразу после нажатия кнопки «Отправить», когда я пытаюсь поместить данные в базу данных. Проверял Logcat и все никак не могу понять как это исправить. Вот код MainActivity.java

import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase;

открытый класс MainActivity расширяет AppCompatActivity {

private Button sendButton;
private TextView editMessage;
private ListView messageList;

private FirebaseDatabase firebaseDatabase;
private DatabaseReference qDatabaseReference;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    try {
        firebaseDatabase = FirebaseDatabase.getInstance();
        qDatabaseReference = qDatabaseReference.getRef().child("messages");
    }catch(Exception e){
        Toast.makeText(this,"Database Error!", Toast.LENGTH_SHORT);
        e.printStackTrace();
    }

    sendButton = findViewById(R.id.sendButton);
    editMessage = findViewById(R.id.messageEdit);
    messageList = findViewById(R.id.messageList);

    sendButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Message message = new Message("user","TEST");
            //app crashes here at the line below
            qDatabaseReference.push().setValue(message);
            editMessage.setText("");
        }
    });
}
}

Код моего класса сообщений

public class Message {

private int maxLength = 1000;

private String name;
private String text;

Message(){
    name = null;
    text = null;
}

Message(String name, String message){
    this.name = name;
    this.text = message;
}
}

Наконец-то нашел ошибку в LogCat

java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.database.DatabaseReference com.google.firebase.database.DatabaseReference.push()' on a null object reference
    at com.codeswingstudios.codewise.MainActivity$1.onClick(MainActivity.java:42)
    at android.view.View.performClick(View.java:5293)
    at android.view.View$PerformClick.run(View.java:21660)
    at android.os.Handler.handleCallback(Handler.java:815)
    at android.os.Handler.dispatchMessage(Handler.java:104)
    at android.os.Looper.loop(Looper.java:227)
    at android.app.ActivityThread.main(ActivityThread.java:6100)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:859)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:749)

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

Удалите блок try и Catch вокруг инициализации ссылки, и вы пытаетесь получить ссылку на ссылку.Заменить qDatabaseReference.getReference() на firebaseDatabase.getReference()

   firebaseDatabase = FirebaseDatabase.getInstance();
   qDatabaseReference = firebaseDatabase.getReference().child("messages");

Надеюсь, что это помогает

0 голосов
/ 25 августа 2018

Попробуйте инициализировать вашу ссылку на базу данных следующим образом:

DatabaseReference qDatabaseReference = FirebaseDatabase.getInstance().getReference().child("messages");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...