此处不允许使用 firebase tutorial-modifier private

firebase tutorial-modifier private is not allowed here

我正在尝试使用 Firebase 向我的 android 应用添加登录功能。我按照 https://firebase.google.com/docs/auth/android/password-auth 上的说明进行操作,但是当我尝试使用私有修饰符时,Android Studio 告诉我它是 "not allowed here." 但如果我不使用该修饰符,我可以'不要在 onStart 中调用 mAuth。

这是我的代码:

package com.priceelectric.xriley.priceprefab;

import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

public class Login extends AppCompatActivity {

    private FirebaseAuth.AuthStateListener mAuthListener;

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

        private FirebaseAuth mAuth;

        mAuth = FirebaseAuth.getInstance();

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

            }
        };
    }

    @Override
    public void onStart(){
        super.onStart();
        mAuth.addAuthStateListener(mAuthListener);
    }
}

这是基本的 Java 规则。您不能在方法中使用 privatepublicprotected 关键字。您只能像设置 private FirebaseAuth.AuthStateListener mAuthListener;.

一样设置 "global" 变量的可见性

解决方法:private FirebaseAuth mAuth;放在private FirebaseAuth.AuthStateListener mAuthListener;的正下方。

正如 Ugurcan 提到的,Java 不允许在方法内的变量上使用 private、public 或 protected 等修饰符。他们只能在 class 体内获得这样的修饰符。您需要做的是将您的 mAuth 变量移动到 class(在 onCreate 之外)。您很可能希望同时声明和实例化它,而不是稍后实例化它。