簡體   English   中英

Google Firebase身份驗證Android Studio

[英]Google Firebase Authentication Android Studio

我試圖在我的應用程序中配置新的google firebase身份驗證。

在按鈕的OnClickListener運行以下內容時,我收到cannot resolve 'addOnCOmpleteListener'

如果我將firebase調用移出onClickListener按鈕,那么錯誤就會消失,

我無法理解為什么無法從按鈕調用中訪問該方法

任何幫助,將不勝感激

package com.example.alex.test;

import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
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 LoginActivity extends AppCompatActivity {
    private FirebaseAuth mAuth;

    private FirebaseAuth.AuthStateListener mAuthListener;

    Button buttonLogin;
    EditText textEmail;
    EditText textPassword;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        mAuth = FirebaseAuth.getInstance();

        buttonLogin = (Button) findViewById(R.id.buttonLogin);
        textEmail = (EditText) findViewById(R.id.editEmail);
        textPassword = (EditText) findViewById(R.id.editPassword);

        mAuthListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if (user != null) {
                    // User is signed in
                    Log.d("LOG_Login", "onAuthStateChanged:signed_in:" + user.getUid());
                } else {
                    // User is signed out
                    Log.d("LOG_Login", "onAuthStateChanged:signed_out");
                }
                // ...
            }
        };




        buttonLogin.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Perform action on clic

                mAuth.signInWithEmailAndPassword(textEmail.getText().toString(),textPassword.getText().toString())
                        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                            @Override
                            public void onComplete(@NonNull Task<AuthResult> task) {
                                Log.d("LOG_Login", "signInWithEmail:onComplete:" + task.isSuccessful());

                                // If sign in fails, display a message to the user. If sign in succeeds
                                // the auth state listener will be notified and logic to handle the
                                // signed in user can be handled in the listener.
                                if (!task.isSuccessful()) {
                                    Log.w("LOG_Login", "signInWithEmail", task.getException());
                                    Toast.makeText(getApplicationContext(), "Authentication failed.", Toast.LENGTH_SHORT).show();
                                }

                                // ...
                            }
                        });
            }
        });

    }
}

我正在使用Android Studio 2.2

我在Firebase中創建了一個項目

我已經在GUI中將我的應用程序連接到了這個

如果我將firebase調用移出onClickListener按鈕,那么錯誤就會消失,

我無法理解為什么無法從按鈕調用中訪問該方法

因為當您在匿名類中使用它時, this是單擊偵聽器。

該方法需要Activity作為addOnCompleteListener的第一個參數,而不是OnClickListener。

.addOnCompleteListener(LoginActivity.this, ... 

暫無
暫無

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

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