这里不允许使用firebase tutorial-modifier private

时间:2016-08-18 14:40:10

标签: android login firebase private modifier

我尝试使用Firebase向我的Android应用添加登录功能。我按照https://firebase.google.com/docs/auth/android/password-auth上的说明进行操作,但是当我尝试使用私有修改器时,Android Studio告诉我它不会在这里被允许。"但如果我不使用该修饰符,我就无法在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);
    }
}

2 个答案:

答案 0 :(得分:1)

这是基本的Java规则。您无法在方法中使用privatepublicprotected个关键字。您只能设置"全球"的可见性。像private FirebaseAuth.AuthStateListener mAuthListener;那样变量。

解决方案:将private FirebaseAuth mAuth;放在private FirebaseAuth.AuthStateListener mAuthListener;下方。

答案 1 :(得分:0)

正如Ugurcan所提到的,Java不允许对方法中的变量使用私有,公共或受保护的修饰符。它们只能在类体内给出这样的修饰符。您需要做的是将您的mAuth变量移动到类中(在onCreate之外)。您很可能希望一次声明并实例化它,而不是稍后实例化它。