簡體   English   中英

Firebase 登錄沒有任何反應

[英]Firebase Login nothing happens

我正在嘗試檢索存儲在我的 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();
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM