无法投射应用程序

Cannot cast Application

我正在我的应用程序中实施 Analytics v.4。 我在获取跟踪器时遇到了问题。

这是代码

public class FactsActivity extends Activity {

    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_fun_facts);

    Tracker t = ((Analytics) getApplication()).getTracker(
            Analytics.TrackerName.APP_TRACKER);        
    t.setScreenName("OLOLO");       
    t.send(new HitBuilders.AppViewBuilder().build());        

我收到一条错误消息

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

它是:“不可转换的类型:无法将 'android.app.Application' 转换为 'com.tomtom.facts.Analytics'

我一直在寻找解决方案,如我所见,我应该修改我的 AndroidManifest.xml 以将 "android:name=..." 包含到 "application" 标记中。但我做不到。它因错误而刹车:'com.tomtom.facts.Analytics' is not assignable to 'android.app.Application'.

请帮忙!我完全卡住了。

这是分析 class

public class Analytics extends Activity {

public enum TrackerName {
    APP_TRACKER,
    GLOBAL_TRACKER,
    E_COMMERCE_TRACKER,
}

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

synchronized Tracker getTracker(TrackerName trackerId) {

    if (!mTrackers.containsKey(trackerId)) {

        GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
        Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker("UA-*******-1")
                : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(R.xml.global_tracker)
                : analytics.newTracker(R.xml.ecommerce_tracker);
        mTrackers.put(trackerId, t);
    }
    return mTrackers.get(trackerId);
}

}

正确的行是:

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

问题可能是你把括号放在了错误的地方。您试图转换 getApplication() 返回的对象。 此外,您可能必须转换为 Tracker 而不是 Analytics