2015-07-09 2 views
1

У меня есть один проект на eclipse, теперь я пытаюсь добавить этот проект Google Analystics, но когда я добавляю этот код, мои приложения MainActivity вылетают.Android - Google Analytics Crashed

Tracker t = ((AnalyticsSampleApp)this.getApplication()).getTracker(TrackerName.APP_TRACKER); 
    t.setScreenName("HomePage"); 
    t.send(new HitBuilders.AppViewBuilder().build()); 

LogCat

07-10 00:59:35.352: E/AndroidRuntime(9968): FATAL EXCEPTION: main 
07-10 00:59:35.352: E/AndroidRuntime(9968): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.interrail.railrehber/com.interrail.railrehber.MainActivity}: java.lang.ClassCastException: android.app.Application cannot be cast to com.interrail.railrehber.AnalyticsSampleApp 
07-10 00:59:35.352: E/AndroidRuntime(9968):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
07-10 00:59:35.352: E/AndroidRuntime(9968):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
07-10 00:59:35.352: E/AndroidRuntime(9968):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
07-10 00:59:35.352: E/AndroidRuntime(9968):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
07-10 00:59:35.352: E/AndroidRuntime(9968):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-10 00:59:35.352: E/AndroidRuntime(9968):  at android.os.Looper.loop(Looper.java:137) 
07-10 00:59:35.352: E/AndroidRuntime(9968):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
07-10 00:59:35.352: E/AndroidRuntime(9968):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-10 00:59:35.352: E/AndroidRuntime(9968):  at java.lang.reflect.Method.invoke(Method.java:511) 
07-10 00:59:35.352: E/AndroidRuntime(9968):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
07-10 00:59:35.352: E/AndroidRuntime(9968):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
07-10 00:59:35.352: E/AndroidRuntime(9968):  at dalvik.system.NativeStart.main(Native Method) 
07-10 00:59:35.352: E/AndroidRuntime(9968): Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to com.interrail.railrehber.AnalyticsSampleApp 
07-10 00:59:35.352: E/AndroidRuntime(9968):  at com.interrail.railrehber.MainActivity.onCreate(MainActivity.java:143) 
07-10 00:59:35.352: E/AndroidRuntime(9968):  at android.app.Activity.performCreate(Activity.java:5207) 
07-10 00:59:35.352: E/AndroidRuntime(9968):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
07-10 00:59:35.352: E/AndroidRuntime(9968):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
07-10 00:59:35.352: E/AndroidRuntime(9968):  ... 11 more 

AnalyticsSampleApp кодовая страница

package com.interrail.railrehber; 

import android.app.Application; 
import com.google.android.gms.analytics.GoogleAnalytics; 
import com.google.android.gms.analytics.Tracker; 

import java.util.HashMap; 

public class AnalyticsSampleApp extends Application { 

// The following line should be changed to include the correct property id. 
private static final String PROPERTY_ID = "UA-56237196-12"; 

public static int GENERAL_TRACKER = 0; 
public enum TrackerName { 
    APP_TRACKER, // Tracker used only in this app. 
    GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking. 
    ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company. 
} 

public HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>(); 

public AnalyticsSampleApp() { 
    super(); 
} 

public synchronized Tracker getTracker(TrackerName trackerId) { 
    if (!mTrackers.containsKey(trackerId)) { 
     GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); 
     Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(PROPERTY_ID): (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(R.xml.global_tracker): analytics.newTracker(R.xml.ecommerce_tracker); 
     mTrackers.put(trackerId, t); 

    } 
    return mTrackers.get(trackerId); 
    } 
} 

Я не понимаю, почему это всегда сбой.

+1

Eclipse? Пожалуйста, обновите уже. Google analytics v4? Пожалуйста, обновите уже. –

ответ

1

Вы должны внимательно прочитать ваш трассировки стека:

Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to com.interrail.railrehber.AnalyticsSampleApp 

в вашем случае означает, что в этой строке:

Tracker t = ((AnalyticsSampleApp)this.getApplication()).getTracker(TrackerName.APP_TRACKER); 

getApplication() возвращает Application объект и не AnalyticsSampleApp «ы. Скорее всего, это вызвано отсутствием ссылки на AnalyticsSampleApp в вашем Manifest's <application> (вам нужно android:name, указывая на ваш класс, see docs). В результате по умолчанию Application используется вашим приложением вместо вашего класса, а исключение исключения - это результат этого, поскольку вы не можете отнести родительский класс к дочернему классу.

+0

Спасибо, я понимаю, я исправлю это :) – ZgrKARALAR

Смежные вопросы