java - Firebase 登录没有任何反应
问题描述
我正在尝试检索存储在 Firebase 数据库中的数据(用户名和密码)。每当我单击登录时,什么都没有发生。
有人可以告诉我哪里出错了吗?我已经浪费了无数个小时试图找到答案。我在下面添加了堆栈跟踪,这是我尝试从user
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.Color;
import android.net.wifi.ScanResult;
import android.nfc.Tag;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
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.ValueEventListener;
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
Button login, register;
EditText et1, et2;
TextView tv1;
int count = 3;
//Firebase database/reference variables.
//FirebaseDatabase database;
//DatabaseReference reference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
login = (Button)findViewById(R.id.loginButtonHome);
register = (Button) findViewById(R.id.registerButton);
et1 = (EditText) findViewById(R.id.userLogin);
et2 = (EditText) findViewById(R.id.userPassword);
tv1 = (TextView) findViewById(R.id.textViewSignin);
//login button on the app
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (validateUser() | validatePass()){
} else{
user();
}
}
});
}
public void loginButton(View view) {
}
private void user() {
final String username = et1.getEditableText().toString().trim();
final String password = et1.getEditableText().toString().trim();
//reference to db in firebase
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("users");
Query checkUser = reference.orderByChild("username").equalTo(username); reference.orderByChild("password").equalTo(password);
checkUser.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()){
String pwFromDB = snapshot.child(username).child("password").getValue(String.class);
if (pwFromDB.equals(password)){
Intent i = new Intent(MainActivity.this, ActivityArray.class);
startActivity(i);
Toast.makeText(getApplicationContext(), "Welcome...", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
public void registerButton(View view) {
register.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
new NewUserActivity();
if (view.isShown()){ //will hide register button after selection.
view.setVisibility(View.INVISIBLE);
}else {
view.setVisibility(View.VISIBLE);
}
Toast.makeText(getApplicationContext(), "Redirecting to Register", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MainActivity.this, NewUserActivity.class);
startActivity(intent);
}
});
}
private Boolean validateUser (){
String val = et1.getEditableText().toString();
if (val.isEmpty()){
et1.setError("Field Cannot Be Empty");
return false;
} else {
et1.setError(null);
return true;
}
}
private Boolean validatePass () {
String val = et2.getEditableText().toString();
if (val.isEmpty()){
et2.setError("Field Cannot Be Empty");
return false;
} else {
et2.setError(null);
return false;
}
}
}
堆栈跟踪输出
f stackTrace = {StackTraceElement[19]@3979}
• Os {StackTraceElement@3983;> "libcore.io.Posix.stat(NativeMethod)" Navigate
• 1 s (StackTraceElement@3984) "libcore.io.BlockGuardOs.stat(BlockGuardOs.java:293)“ Navigate
• 2 s {StackTraceElement@3985; "java.io.File.isDirectory(File.java:522)" Navigate
• 3 s {StackTraceElement@3986} "dalvik.system.DexPathList.makePathElements(DexPathlistjava:232)“ Navigate
• 4 s {StackTraceElement@3987} ”dalvik.system.DexPathList<init>(DexPathlist.java:139)" Navigate
• 5 s {StackTraceElement@3988> "dalvik.system.BaseDexClassLoader.<init>(BaseDexClassloader.java:48)“ Navigate
• 6 s {StackTraceElement@3989> "dalvik.system.PathClassLoader.<init>(PathClassloader.java:65)" Navigate
• 7s {StackTraceElement@3990) "android.app.ApplicationLoaders.getClassLoader(Applicationloaders.java:58r Navigate
• 8 s {StackTraceElement@399l “android.app.loadedApk.getClassLoader(LoadedApkjava:376)“ Navigate
• 9 s {StackTraceElement@3992} ”android.app.LoadedApk.makeApplication(LoadedApk.java:568)" . Navigate
• 10 = (StackTraceElement@3993) “android.app.ActivityThread.handleBindApplication(ActivityThread.java:4680)" Navigate
• 11 s {StackTraceElement@3994j "android.app.ActivityThread.-wrap1(ActivityThread.java)‘ Navigate
• 12 = {StackTraceElement@3995j ”android.app.ActivityThreadSH.handleMessage(ActivityThreadjava:1405)“ .. Navigate
• 13 = {StackTraceElement@3996j "android.os.Handler.dispatchMessage(Handler.java:102)" Navigate
• 14 = (StackTraceElement@3997) "android.os.Looper.loop(Looper.java:148)M Navigate
• 15 = {StackTraceElement@3998] "android.app.ActivityThread.main(ActivityThread.java:5417)" Navigate
• 16 = (StackTraceElement@3999) "java.lang.reflectMethod.invoke(Native Method)" .. Navigate
• 17 = (StackTraceElement@4000) "com.android.internal.os.Zygotelnit$MethodAndArgsCaller.run(Zygotelnitjava:726)" Navigate
• 18 = (StackTraceElement@4001) -com.android.internal.os.Zygotelnit.main(Zygotelnit.java:616)“ Navigate
解决方案
尝试将您的 onClick 方法更改为此方法。你用过| 插入||。并且 if/else 可以简化
login.setOnClickListener(view -> {
if (!(validateUser() || validatePass())) user();
});
推荐阅读
- java - JavaRDD 等价于 GROUP BY
- java - 为什么 if (variable1 % variable2 == 0) 效率低下?
- sql - 将 SQL 脚本转换为 Access
- opc-ua - 客户端无法写入外部服务器的节点
- udp - 用于 gen cam / GigE 视觉相机发现和通信的防火墙配置
- php - laravel 如何用外键创建模型工厂
- nginx - 为 sftp 创建一个支持 nginx 的共享文件夹
- java - SwipeRefreshLayout - Recyclerview 滚动到随机位置
- java - Peek() 真正看到元素流过管道中的某个点
- apache-camel - camel-restdsl-swagger xml 生成找不到所需的方法 allowableValues(String)