firebase登录什么都没发生

lvjbypge  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(296)

我正在尝试检索存储在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(DexPathlist.java:139)" Navigate
• 5 s {StackTraceElement@3988> "dalvik.system.BaseDexClassLoader.(BaseDexClassloader.java:48)“ Navigate
• 6 s {StackTraceElement@3989> "dalvik.system.PathClassLoader.(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

nnt7mjpx

nnt7mjpx1#

尝试将onclick方法更改为此方法。你用|代替了| |。如果可以简化的话

login.setOnClickListener(view -> {
    if (!(validateUser() || validatePass())) user();
});

相关问题