2016-08-18 1 views
0

Ich versuche, Login-Funktionalität zu meiner Android-App mit Firebase hinzufügen. Ich befolge die Anweisungen unter https://firebase.google.com/docs/auth/android/password-auth, aber wenn ich versuche, den privaten Modifizierer zu verwenden, sagt mir Android Studio, dass es "hier nicht erlaubt" ist. Aber wenn ich diesen Modifikator nicht verwende, kann ich mAuth nicht in onStart aufrufen.Firebase Tutorial-Modifikator privat ist hier nicht erlaubt

Hier ist mein Code:

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

Antwort

1

die grundlegende Java-Regel ist. Sie können keine private, public, protected Schlüsselwörter in Methoden verwenden. Sie können die Sichtbarkeit einer "globalen" Variablen nur so einstellen, wie Sie es für private FirebaseAuth.AuthStateListener mAuthListener; getan haben.

Lösung: Setzen Sie private FirebaseAuth mAuth; direkt unter private FirebaseAuth.AuthStateListener mAuthListener;.

0

Wie Ugurcan erwähnt, erlaubt Java keine Modifizierer wie private, öffentliche oder geschützte Variablen in Methoden. Sie können nur solche Modifikatoren innerhalb des Klassenkörpers erhalten. Was Sie tun müssen, ist Ihre mAuth-Variable in die Klasse zu verschieben (außerhalb von onCreate). Es ist mehr als wahrscheinlich, dass Sie alles gleichzeitig deklarieren und instanziieren möchten, anstatt es später zu instanziieren.

Verwandte Themen