2016-11-02 2 views
0

Я пытаюсь собрать информацию о том, что пользовательские данные являются ввод с помощью Google Firebase, но я все время получаю исключения нулевого указателя, в частностиNullPointerException при вызове Firebase setUserProperty

java.lang.NullPointerException: Попытка вызова виртуальной метод 'недействительным com.google.firebase.analytics.FirebaseAnalytics.setUserProperty (java.lang.String, java.lang.String)' на нулевой ссылки на объект

Это код:

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

Что называется в другом файле, как например:

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

ответ

0

Где вы инициализации переменной stringTime? Исключение происходит из-за неинициализированной переменной stringTime.

4

Если вы пытаетесь Instantiate, что активность обычными средствами (Analytics analytics = new Analytics();) метод onCreate() не будет вызываться.

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

И называют его от другой деятельности

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

спасибо за ответ! К сожалению, файл, в котором я вызываю 'Analytics analytics = new Analytics();' - это фрагмент, поэтому ключевое слово «Активность» не работает. Есть ли обходной путь для этого? –

+0

вы можете использовать 'getActivity()' для фрагмента –