无法投射应用程序
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
我正在我的应用程序中实施 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