【问题标题】:issue with addOnCompleteListener solved! -> running into W/System: Ignoring header X-Firebase-Locale because its value was nulladdOnCompleteListener 的问题已解决! -> 遇到 W/System:忽略标头 X-Firebase-Locale,因为它的值为 null
【发布时间】:2021-06-25 04:38:29
【问题描述】:

由于 OnCompleteListener 的问题,我的 android 应用程序无法编译。我得到的具体错误是

错误:没有找到适合 addOnCompleteListener(,) 的方法 .addOnCompleteListener(这个,新的 OnCompleteListener() { ^ 方法 Task.addOnCompleteListener(Executor,OnCompleteListener) 不适用 (参数不匹配;无法转换为 Executor) 方法 Task.addOnCompleteListener(Activity,OnCompleteListener) 不适用 (参数不匹配;无法转换为 Activity)

我正在使用我的 android 应用程序执行用户身份验证系统,但由于某种原因,每当我编译应用程序时都会遇到此错误。我正在关注 Android Studios 的这个资源 (https://firebase.google.com/docs/android/setup)。非常感谢任何帮助以使我的用户身份验证正常工作并在我的 Firebase 上正确填充。

非常感谢您!

package com.example.hoptoit;

import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
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 MainActivity extends AppCompatActivity {

    GoogleMap map;
    private Marker marker;
    private static final int LOCATION_PERMISSION_REQUEST_CODE = 1;
    private boolean permissionDenied = false;
    private LatLng Hopkins = new LatLng(39.33033283923643, -76.62053915767162);

    private FirebaseAuth auth;


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        auth = FirebaseAuth.getInstance();

        Button buttonSignUp = (Button) findViewById(R.id.buttonSignUp);
        EditText editTextEmail = (EditText) findViewById(R.id.editTextEmail);
        EditText editTextPassword = (EditText) findViewById(R.id.editTextPassword);

        TextView textViewResponse = (TextView) findViewById(R.id.textViewResponse);

        editTextEmail.setText("");
        editTextPassword.setText("");

        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = auth.getCurrentUser();
        if(currentUser != null){
            updateUI(currentUser);
        }




        buttonSignUp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(), 0);

                if (TextUtils.isEmpty(editTextPassword.toString()) || TextUtils.isEmpty(editTextEmail.toString())) {
                    textViewResponse.setText("Email Address or Password is not provided");
                } else {


                    System.out.println("This is blank maybe " + editTextEmail.getText().toString());
                    System.out.println("This is blank maybe " + editTextPassword.getText().toString());

                    auth.signInWithEmailAndPassword(editTextEmail.getText().toString(), editTextPassword.getText().toString())
                            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                                @Override
                                public void onComplete(@NonNull Task<AuthResult> task) {
                                    if (task.isSuccessful()) {
                                        // Sign in success, update UI with the signed-in user's information
                                        //Log.d(TAG, "signInWithEmail:success");
                                        FirebaseUser user = auth.getCurrentUser();
                                        updateUI(user);
                                    } else {
                                        // If sign in fails, display a message to the user.
                                       // Log.w(TAG, "signInWithEmail:failure", task.getException());
                                       // Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                                                //Toast.LENGTH_SHORT).show();
                                        updateUI(null);
                                    }
                                }
                            });



                }

            }
        });






    };

    private void updateUI(FirebaseUser user) {
    }

    

}

感谢某人之前的评论,我的应用程序终于能够编译,但由于某种原因,当用户输入用户名和密码时,终端告诉我 W/System:忽略标头 X-Firebase-Locale,因为它的值为 null。 我相信我始终连接了我的 Firebase 并启用了电子邮件身份验证,所以请告诉我我可能缺少哪些其他步骤,谢谢!

【问题讨论】:

    标签: android firebase android-studio firebase-realtime-database firebase-authentication


    【解决方案1】:

    您从onClickListener() 内部调用this,它不会返回您最有可能寻找的上下文作为addOnCompleteListener 的参数。

    您可以使用 Activity 名称来指定您要查找的上下文:

    // Replace 'this' with 'YourActivityName.this'
    auth.signInWithEmailAndPassword(editTextEmail.getText().toString(), editTextPassword.getText().toString())
        .addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                // ...
            }
        }
    

    【讨论】:

    • @Sammy 非常感谢,这解决了问题!但由于某种原因,现在我能够编译我的应用程序,我得到了 W/System: Ignoring header X-Firebase-Locale 因为它的值为空的结果。?你知道如何解决这个问题吗?我已连接到 FireBase 并启用了身份验证并将正确的依赖项添加到 Gradle,我没有指定我的应用程序的 SHA-1 指纹,因为我不确定如何执行此操作。您知道如何解决此问题以完成身份验证吗?
    • 不客气,@fabiocontreras。我对您为什么会看到该警告有一些猜测。但是,您应该创建一个包含该问题的新帖子,以维护 stackoverflow 的单个问题和答案格式。请记住将答案标记为已接受,以将此问题更新为已解决。
    猜你喜欢
    • 2021-02-19
    • 2022-08-23
    • 2021-06-29
    • 2021-04-25
    • 2021-03-11
    • 1970-01-01
    • 2022-10-05
    • 2021-10-16
    相关资源
    最近更新 更多