2016-11-02 5 views
0

Ich versuche, Informationen darüber, welche Daten des Benutzers zu sammeln eingeben Google Firebase verwenden, aber ich halte einen Null-Zeiger Ausnahme empfängt, speziellNullpointer wenn Firebase SetUserProperty Aufruf

java.lang.NullPointerException: Versuch virtuellen aufzurufen Methode 'VOID com.google.firebase.analytics.FirebaseAnalytics.setUserProperty (java.lang.String, java.lang.String)' auf null Objektreferenz

Dies ist der Code:

public class Analytics extends Activity { 
    FirebaseAnalytics analytics; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     analytics = FirebaseAnalytics.getInstance(Analytics.this); 
    } 

    public void timer(int time) { 
     String stringTime = String.valueOf(time); 
     analytics.setUserProperty("Timeset", stringTime); 
    } 
} 

, die in einer anderen Datei als solche bezeichnet wird:

Analytics analytics = new Analytics(); 
analytics.timer(10); 

Antwort

0

Wo Sie die Stringtime initialisiert Variable? Die Ausnahme liegt an der nicht initialisierten StringTime-Variable.

4

Wenn Sie instantiate versuchen, dass Aktivität mit normalen Mitteln (Analytics analytics = new Analytics();) die onCreate() Methode nicht aufgerufen werden.

public class Analytics { 
    FirebaseAnalytics analytics; 

    public Analytics(Context context) 
    { 
     analytics = FirebaseAnalytics.getInstance(Analytics.this); 
    } 


    public void timer(int time) { 
     String stringTime = String.valueOf(time); 
     analytics.setUserProperty("Timeset", stringTime); 
    } 
} 

Und es von Ihren anderen Tätigkeit nennen

Analytics analytics = new Analytics(Activity.this); 
analytics.timer(10); 
+0

Dank für die Antwort! Leider ist die Datei, in der ich 'Analytics Analytics = new Analytics();' aufruft, ein Fragment, so dass das Schlüsselwort 'Activity' nicht funktioniert. Gibt es einen Workaround dafür? –

+0

können Sie 'getActivity()' für Fragment verwenden –

Verwandte Themen