Я пытаюсь добавить оценку пользователей к их узлу в базе данных 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();
}
});
}
}