Как я могу добавить данные пользователю в базе данных реального времени firebase? - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь добавить оценку пользователей к их узлу в базе данных Firebase в реальном времени, но оценка сохраняется отдельно, а не как часть текущей ветви пользователей. Я приложил код java для игры, в которой рассчитывается счет, вместе с кодом для класса входа в систему.

Я новичок в программировании и немного запутался, поэтому любая помощь приветствуется

Спасибо

package com.example.securityapp;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.content.Context;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ProgressBar;
import android.widget.Toast;

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

public class phishing_questions extends AppCompatActivity {

    CheckBox financial, kindness, humour, postal, virtual, electronic, grammar, urgency, accuracy, highLevel, lowLevel, all, email, text, coldcall;
    Button score, finished;
    ProgressBar questionProgress;
    DatabaseReference databaseUsers;
    FirebaseDatabase database = FirebaseDatabase.getInstance();


    int grade = 0;
    int progress = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_phishing_questions);

        questionProgress = (ProgressBar) findViewById(R.id.progress_bar);
        questionProgress.setMax(5);
        questionProgress.setProgress(0);

        final Context currentContext = this;
        finished = (Button) findViewById(R.id.finish);
        score = (Button) findViewById(R.id.final_score);
        databaseUsers = database.getReference();


        score.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (financial.isChecked()) grade++;

                if (electronic.isChecked()) grade++;

                if (urgency.isChecked()) grade++;

                if (highLevel.isChecked()) grade++;

                if (text.isChecked()) grade++;

                String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
                databaseUsers.child(uid).setValue(grade);

                Toast.makeText(currentContext, "You scored " + grade + " points!", Toast.LENGTH_LONG).show();
                grade = 0;
            }
        });


        financial = (CheckBox) findViewById(R.id.financial_gain_checkbox);
        kindness = (CheckBox) findViewById(R.id.kindness_checkbox);
        humour = (CheckBox) findViewById(R.id.humour_checkbox);
        postal = (CheckBox) findViewById(R.id.postal_checkbox);
        virtual = (CheckBox) findViewById(R.id.virtual_checkbox);
        electronic = (CheckBox) findViewById(R.id.electronic_checkbox);
        grammar = (CheckBox) findViewById(R.id.good_grammar_checkbox);
        urgency = (CheckBox) findViewById(R.id.urgency_checkbox);
        accuracy = (CheckBox) findViewById(R.id.accuracy_checkbox);
        highLevel = (CheckBox) findViewById(R.id.high_level_checkbox);
        lowLevel = (CheckBox) findViewById(R.id.low_level_checkbox);
        all = (CheckBox) findViewById(R.id.all_employees_checkbox);
        email = (CheckBox) findViewById(R.id.via_email_checkbox);
        text = (CheckBox) findViewById(R.id.via_text_checkbox);
        coldcall = (CheckBox) findViewById(R.id.via_coldcalls_checkbox);
    }

    public void questionOneProgress() {
        if (financial.isChecked()) questionProgress.setProgress(progress++);
        else if (kindness.isChecked()) questionProgress.setProgress(progress++);
        else if (humour.isChecked()) questionProgress.setProgress(progress++);
    }




    public void FinishedOnClick (View view)
    {
        finished.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Intent intent_finished = new Intent(phishing_questions.this, rating.class);
                startActivity(intent_finished);
                finish();
            }
        });
    }





}

package com.example.securityapp;

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

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

public class login extends AppCompatActivity
        //implements View.OnClickListener
    {
        Button signUp;
        Button login;
        EditText etEmail;
        EditText etPassword;
        ProgressBar bar;
        FirebaseAuth mAuth;


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

            signUp = (Button) findViewById(R.id.signUp_button);
            login = (Button) findViewById(R.id.login_button);
            etEmail = (EditText)findViewById(R.id.email_input);
            etPassword = (EditText)findViewById(R.id.password_input);
            bar = (ProgressBar) findViewById(R.id.progressBar);
            bar.setVisibility(View.GONE);
            mAuth = FirebaseAuth.getInstance();
        }

        @Override
        public void onStart()
        {
            super.onStart();
            // Check if user is signed in (non-null) and update UI accordingly.
            FirebaseUser currentUser = mAuth.getCurrentUser();
        }

        //Code taken from https://firebase.google.com/docs/auth/android/password-auth on 06/11/2019
        public void loginUser()
        {
            final String email = etEmail.getText().toString();
            String password = etPassword.getText().toString();

            if(email.isEmpty()&&password.isEmpty())
            {
                Toast.makeText(login.this, "Email and password cannot be empty.",
                        Toast.LENGTH_SHORT).show();
                bar.setVisibility(View.GONE);
            }else if(email.isEmpty())
            {
                Toast.makeText(login.this, "Email cannot be empty.",
                        Toast.LENGTH_SHORT).show();
                bar.setVisibility(View.GONE);
            }else if(password.isEmpty())
            {
                Toast.makeText(login.this, "Password cannot be empty.",
                        Toast.LENGTH_SHORT).show();
                bar.setVisibility(View.GONE);
            }else

                mAuth.signInWithEmailAndPassword(email, password)
                        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                            @Override
                            public void onComplete(@NonNull Task<AuthResult> task) {
                                if (task.isSuccessful())
                                {
                                    //Log.d(TAG, "signInWithEmail:success");
                                    // FirebaseUser user = mAuth.getCurrentUser();
                                    bar.setVisibility(View.VISIBLE);
                                    Intent intent_home = new Intent(login.this, home.class);
                                    startActivity(intent_home);
                                    finish();
                                    Toast.makeText(login.this, "Login successful",
                                            Toast.LENGTH_SHORT).show();
                                    //updateUI(user);
                                } else {
                                    // If sign in fails, display a message to the user.
                                    //Log.w(TAG, "signInWithEmail:failure", task.getException());
                                    Toast.makeText(login.this, "Incorrect Email or Password.",
                                            Toast.LENGTH_SHORT).show();
                                    bar.setVisibility(View.GONE);

                                    //updateUI(null);
                                }

                                // ...
                            }
                        });
            }





        public void loginOnClick (View view)
{
    login.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            bar.setVisibility(View.VISIBLE);
            loginUser();

        }
    });
}

        public void RegisterOnClick (View view)
        {
            signUp.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                    Intent intent_reg = new Intent(login.this, register.class);
                    startActivity(intent_reg);
                    finish();
                }
            });
        }


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