java - 带有 Firebase 的 Android 应用 [数据库问题]
问题描述
几天前,我开始在“Android Studio”中编写应用程序。
我最近发现了我想用作数据库的 Firebase。我现在的问题是,无论我如何编写代码,都不会将任何内容写入“实时数据库”。有时我的应用程序完全崩溃,有时会无限循环加载。
如果有人可以帮助写入我的数据库结构应该如下:
用户: --
UID:
----年龄:
----电子邮件:
----全名:
这是我的代码,也许有人可以找到我的错误。
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Patterns;
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.database.FirebaseDatabase;
public class RegisterUser extends AppCompatActivity implements View.OnClickListener {
private TextView banner, registerUser;
private EditText editTextFullName, editTextAge, editTextEmail, editTextPassword;
private ProgressBar progressBar;
private FirebaseAuth databaseAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register_user);
databaseAuth = FirebaseAuth.getInstance();
banner = (TextView) findViewById(R.id.banner);
banner.setOnClickListener(this);
registerUser = (Button) findViewById(R.id.registerUser);
registerUser.setOnClickListener(this);
editTextFullName = (EditText) findViewById(R.id.fullName);
editTextAge = (EditText) findViewById(R.id.age);
editTextEmail = (EditText) findViewById(R.id.email);
editTextPassword = (EditText) findViewById(R.id.password);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.banner:
startActivity(new Intent(this, MainActivity.class));
break;
case R.id.registerUser:
registerUser();
break;
}
}
private void registerUser() {
String email = editTextEmail.getText().toString().trim();
String password = editTextPassword.getText().toString().trim();
String fullName = editTextFullName.getText().toString().trim();
String age = editTextAge.getText().toString().trim();
if (fullName.isEmpty()){
editTextFullName.setError("Bitte ausfüllen.");
editTextFullName.requestFocus();
return;
}
if (age.isEmpty()){
editTextAge.setError("Bitte ausfüllen.");
editTextAge.requestFocus();
return;
}
if (email.isEmpty()){
editTextEmail.setError("Bitte ausfüllen.");
editTextEmail.requestFocus();
return;
}
if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()){
editTextEmail.setError("Bitte eine gültige Email-Adresse angeben.");
editTextEmail.requestFocus();
return;
}
if(password.isEmpty()){
editTextPassword.setError("Bitte ausfüllen.");
editTextPassword.requestFocus();
return;
}
if (password.length() < 6){
editTextPassword.setError("Password muss mindestens aus 6 Zeichen bestehen.");
editTextPassword.requestFocus();
return;
}
progressBar.setVisibility(View.VISIBLE);
databaseAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()){
User user = new User(fullName, age, email);
FirebaseDatabase.getInstance().getReference("Users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Toast.makeText(RegisterUser.this, "Registrierung erfolgreich!", Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
} else {
Toast.makeText(RegisterUser.this, "Ein Fehler ist aufgetreten! Versuch es erneut.", Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
}
}
});
} else {
Toast.makeText(RegisterUser.this, "Ein Fehler ist aufgetreten! Versuch es erneut.", Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
}
}
});
}
}```
解决方案
推荐阅读
- tensorflow - TensorFlow 的 model.fit() 函数中的 batchSize 是什么?
- php - Laravel 7 在 Job 类中动态设置日志路径
- react-native - 动画完成后如何触发功能?
- java - 是否可以将 wiimote 用作安卓游戏控制器?
- javascript - chrome 中 RTL 警报框的意外行为
- linux - 使用预设自动替换 .conf 中的特定值
- python - 为什么我的模块不能访问它应该导入的变量?
- c# - HttpClient 在 GetAsync 上挂起 ERR_CONNECTION_REFUSED
- python - 缩放 DivergingNorm matplotlib 颜色条,使中心值位于条的中心
- python - 如何通过DetailView显示相关对象