2016-08-18 5 views
0

Firebaseを使用してAndroidアプリケーションにログイン機能を追加しようとしています。私はhttps://firebase.google.com/docs/auth/android/password-authの指示に従っていますが、プライベートモディファイアを使用しようとすると、Android Studioは「ここで許可されていません」と伝えます。しかし、私がその修飾子を使用しないと、onStartでmAuthを呼び出すことはできません。基本的なJavaルールをですfirebase tutorial-modifier privateはここでは許可されていません

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); 
    } 
} 

答えて

1

は、ここに私のコードです。メソッド内にprivate,publicprotectedキーワードを使用することはできません。 private FirebaseAuth.AuthStateListener mAuthListener;の場合と同じように、「グローバル」変数の表示のみを設定できます。

ソリューション:private FirebaseAuth mAuth;を右下private FirebaseAuth.AuthStateListener mAuthListener;に置きます。

0

上記のUgurcanのように、Javaでは、private、public、メソッド内の変数のprotectedなどの修飾子は使用できません。それらは、クラス本体の中でのみ、そのような修飾子を与えることができます。あなたがする必要があるのは、あなたのmAuth変数をクラスに移動することです(onCreateの外で)。おそらく、後でインスタンス化するのではなく、一度に宣言してインスタンス化する必要があります。

関連する問題