Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google Firebase Authentication Android Studio

Im attempting to configure the new google firebase authentication in my app.

I am receiving cannot resolve 'addOnCOmpleteListener' when running the following within the OnClickListener for the button.

If i move the firebase call out of the buttons onClickListener then the error goes,

I cant quite understand why the method is not accessible from within the button call

Any Help would be appreciated

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();
                                }

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

    }
}

i am using Android Studio 2.2

I have created a project within Firebase

I have connected my app to this within the GUI

like image 703
PowerMan2015 Avatar asked May 25 '26 16:05

PowerMan2015


1 Answers

If i move the firebase call out of the buttons onClickListener then the error goes,

I cant quite understand why the method is not accessible from within the button call

Because this is the click listener when you have it inside the anonymous class.

The method requires an Activity as the first parameter to the addOnCompleteListener and not an OnClickListener.

.addOnCompleteListener(LoginActivity.this, ... 
like image 52
OneCricketeer Avatar answered May 27 '26 07:05

OneCricketeer



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!