此处不允许使用 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 规则。您不能在方法中使用 private
、public
、protected
关键字。您只能像设置 private FirebaseAuth.AuthStateListener mAuthListener;
.
一样设置 "global" 变量的可见性
解决方法:把private FirebaseAuth mAuth;
放在private FirebaseAuth.AuthStateListener mAuthListener;
的正下方。
正如 Ugurcan 提到的,Java 不允许在方法内的变量上使用 private、public 或 protected 等修饰符。他们只能在 class 体内获得这样的修饰符。您需要做的是将您的 mAuth 变量移动到 class(在 onCreate 之外)。您很可能希望同时声明和实例化它,而不是稍后实例化它。
我正在尝试使用 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 规则。您不能在方法中使用 private
、public
、protected
关键字。您只能像设置 private FirebaseAuth.AuthStateListener mAuthListener;
.
解决方法:把private FirebaseAuth mAuth;
放在private FirebaseAuth.AuthStateListener mAuthListener;
的正下方。
正如 Ugurcan 提到的,Java 不允许在方法内的变量上使用 private、public 或 protected 等修饰符。他们只能在 class 体内获得这样的修饰符。您需要做的是将您的 mAuth 变量移动到 class(在 onCreate 之外)。您很可能希望同时声明和实例化它,而不是稍后实例化它。