我尝试使用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);
}
}
答案 0 :(得分:1)
这是基本的Java规则。您无法在方法中使用private
,public
,protected
个关键字。您只能设置"全球"的可见性。像private FirebaseAuth.AuthStateListener mAuthListener;
那样变量。
解决方案:将private FirebaseAuth mAuth;
放在private FirebaseAuth.AuthStateListener mAuthListener;
下方。
答案 1 :(得分:0)
正如Ugurcan所提到的,Java不允许对方法中的变量使用私有,公共或受保护的修饰符。它们只能在类体内给出这样的修饰符。您需要做的是将您的mAuth变量移动到类中(在onCreate之外)。您很可能希望一次声明并实例化它,而不是稍后实例化它。