Как добавить столбцы в Firebase - PullRequest
0 голосов
/ 06 апреля 2020

В настоящее время я пытаюсь добавить данные в свою базу данных и отобразить значение, однако у меня возникают проблемы при этом. это код, который я использовал до сих пор.

package com.example.alzheimersdetector;

import com.google.firebase.database.Exclude;

import java.util.HashMap;
import java.util.Map;

public class faqinputs {
    private double questionOne;
    private double questionTwo;
    private double questionThree;
    private double questionFour;
    private double questionFive;
    private double questionSix;
    private double questionSeven;
    private double questionEight;
    private double questionNine;
    private double questionTen;




    public faqinputs(double questionOne, double questionTwo, double questionThree,
                     double questionFour, double questionFive, double questionSix, double questionSeven, double questionEight, double questionNine, double questionTen) {
    this.questionOne = questionOne;
    this.questionTwo = questionTwo;
    this.questionThree = questionThree;
    this.questionFour = questionFour;
    this.questionFive = questionFive;
    this.questionSix = questionSix;
    this.questionSeven = questionSeven;
    this.questionEight = questionEight;
    this.questionNine = questionNine;
    this.questionTen = questionTen;

}
public faqinputs() {

}



public double getQuestionOne() {return questionOne;}

public void setQuestionOne(double questionOne) {
    this.questionOne = questionOne;
}



public double getQuestionTwo() {
    return questionTwo;
}

public void setQuestionTwo(double questionTwo) {
    this.questionTwo = questionTwo;
}




public double getQuestionThree() {
    return questionThree;
}

public void setQuestionThree(double questionThree) {
    this.questionThree = questionThree;
}




public double getQuestionFour() {
    return questionFour;
}

public void setQuestionFour(double questionFour) {
    this.questionFour = questionFour;
}




public double getQuestionFive() {
    return questionFive;
}

public void setQuestionFive(double questionFive) {
    this.questionFive = questionFive;
}





public double getQuestionSix() {
    return questionSix;
}

public void setQuestionSix(double questionSix) {
    this.questionSix = questionSix;
}




public double getQuestionSeven() {
    return questionSeven;
}

public void setQuestionSeven(double questionSeven) {
    this.questionSeven = questionSeven;
}




public double getQuestionEight() {
    return questionEight;
}

public void setQuestionEight(double questionEight) {
    this.questionEight = questionEight;
}




public double getQuestionNine() {
    return questionNine;
}

public void setQuestionNine(double questionNine) {
    this.questionNine = questionNine;
}




public double getQuestionTen() {
    return questionTen;
}

public void setQuestionTen(double questionTen) {
    this.questionTen = questionTen;
}

}

Данные успешно сохраняются в базе данных Firebase. Он сохраняется в узле пользователя.

package com.example.alzheimersdetector;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.ValueEventListener;

import static android.os.Build.VERSION_CODES.O;

public class Results extends AppCompatActivity {
    private DatabaseReference mDatabase;
    private FirebaseAuth fAuth;
    private Button generate;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_results);
        generate = (Button)findViewById(R.id.generate);
        //Get a reference to the Firebase Database
        mDatabase = FirebaseDatabase.getInstance().getReference();
        GetUserScore();
    }

    private void GetUserScore() {
        String UserId= fAuth.getUid();
        Query totalResultQuery = mDatabase.child("FAQ").child(UserId);

        // [Start basic_query_value_listener]
        // sum of user's results

        ValueEventListener eventListener = new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                double count = 0;
                for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
                    double total = dataSnapshot.child("FAQ").getValue(Double.class);
                    count = count + total;
                }
                Log.d("TAG", count  + "");
            }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        };
        totalResultQuery.addListenerForSingleValueEvent(eventListener);

    }
}

Поэтому я пытаюсь добавить вопрос От одного до вопросен, а затем отобразить результат.

Код создается, затем я запускаю приложение, и оно вылетает , Я получаю эту ошибку в «Выполнить»

E / AndroidRuntime: FATAL EXCEPTION: main Процесс: com.example.alzheimersdector, PID: 28399 java .lang.RuntimeException: Невозможно запустить действие ComponentInfo {com.example.alzheimersdector / com.example.alzheimersdetector.Results}: java .lang.NullPointerException: попытка вызвать виртуальный метод 'java .lang.String com.google.firebase.auth.FirebaseAuth.getUid ( ) 'на нулевую ссылку на объект

1 Ответ

1 голос
/ 06 апреля 2020

Вы получаете NullPointerException на

String UserId= fAuth.getUid();

Это происходит потому, что ваш код не инициализирует fAuth перед вызовом getUid().

Чтобы это исправить вы, вероятно, захотите инициализировать fAuth в onCreate, например:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_results);
    generate = (Button)findViewById(R.id.generate);

    mDatabase = FirebaseDatabase.getInstance().getReference();
    fAuth = FirebaseAuth.getInstance(); // this line is new

    GetUserScore();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...