2014-07-25 19 views
9

Kiedy próbuję dostać trackera w mojej działalności to pokazać błąd, który -To metoda jest Undefine „getactivity()” w google analitycznej v4Android Google Analytics błędach integracja

// Get tracker. 
    Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()) 
      .getTracker(TrackerName.APP_TRACKER); 
+0

jeśli nazywając ten kod z działalności następnie usunąć getActivity() jeśli wywołanie go z fragmentem następnie zachować go –

+0

thx, to działa, ale to pokazuje błąd java.lang.ClassCastException : Android.app.Aplikacja nie może być rzutowana na com.example.analys.AnalyticsSampleApp – user3736720

+0

użyj tego Tracker t = ((AnalyticsSampleApp) getApplication()) .getTracker (TrackerName.APP_TRACKER); – rup35h

Odpowiedz

23

Jeśli nie zrobiłeś już, stwórz klasę MojaAplikacja rozszerza Aplikację dla twojej aplikacji, i upewnij się, że dodajesz ją do swojego manifestu jak poniżej (właściwość, która ma znaczenie tutaj to android: nazwa, usunąłem inne właściwości xml dla jasności).

<application 
    android:name="mypackagename.MyApplication" 
    ... > 

Następnie w swojej klasie MyApplication utwórz metodę getTracker według Google Analytics v4 dokumentacji https://developers.google.com/analytics/devguides/collection/android/v4/#tracking-methods

Następnie użyj

Tracker t = ((MyApplication) getApplication()) 
     .getTracker(TrackerName.APP_TRACKER); 
+0

proszę sprawdź mainfest – user3736720

+0

Zobacz moją edycję, z manifestem ekstraktu do aplikacji – FreewheelNat

+0

świetnie! nic o tym nie wspomniano w przewodniku dla programistów Google Analytics. Dziękuję Ci! – Mulgard

0

ja też w obliczu tej kwestii chwila plecy. Aby go rozwiązać, jak wspomniano powyżej, usunięto getActivity(), a także dodawanie .MyApplication do android: nazwa w manifeście. Jednak musiałem dodać MyApplication przed TrackerName, jak pokazano poniżej.

Tracker t = ((MyApplication) getApplication()).getTracker(MyApplication.TrackerName.APP_TRACKER); 

Nadzieja to pomaga