尝试实施 Google 分析,错误跟踪器 class 无法解析为变量
Trying to implement Google analytics, error tracker class cannot be resolved to a variable
我按照 google 给出的说明使用了示例应用程序。 eclipse 在 MainScreen 中说,MyApplication 无法解析为变量,但是如果我 ctrl+click 它,它会跳转到 MyApplication.java... 有什么问题吗?
这是MyApplication.java
public class MyApplication extends Application{
HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();
private static final String PROPERTY_ID = "UA-61709726-1";
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 MyApplication() {
super();
}
synchronized Tracker getTracker(TrackerName trackerId) {
if (!mTrackers.containsKey(trackerId)) {
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE);
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);
t.enableAdvertisingIdCollection(true);
mTrackers.put(trackerId, t);
}
return mTrackers.get(trackerId);
}
}
这是MainScreen.java
//...............
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Tracker t = ( (MyApplication) .getApplication()).getTracker(
TrackerName.APP_TRACKER);
// Set screen name.
t.setScreenName("MainScreen");
// Send a screen view.
t.send(new HitBuilders.ScreenViewBuilder().build());
//................
我的清单:
//................
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:name=".MyApplication"> <!-- replace with your app class-->
android:allowBackup="true"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:largeHeap="true"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.facebook.sdk.ApplicationId"
//................
您需要让 Android 知道您希望它使用您的自定义应用程序实现而不是默认 android.app.Application
。为此,您需要将 android:name="<your-app-class>"
属性添加到 AndroidManifest.xml:
<manifest>
...
<application
android:name=".MyApplication"> <!-- replace with your app class-->
...
</application>
</manifest>
我按照 google 给出的说明使用了示例应用程序。 eclipse 在 MainScreen 中说,MyApplication 无法解析为变量,但是如果我 ctrl+click 它,它会跳转到 MyApplication.java... 有什么问题吗?
这是MyApplication.java
public class MyApplication extends Application{
HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();
private static final String PROPERTY_ID = "UA-61709726-1";
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 MyApplication() {
super();
}
synchronized Tracker getTracker(TrackerName trackerId) {
if (!mTrackers.containsKey(trackerId)) {
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE);
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);
t.enableAdvertisingIdCollection(true);
mTrackers.put(trackerId, t);
}
return mTrackers.get(trackerId);
}
}
这是MainScreen.java
//...............
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Tracker t = ( (MyApplication) .getApplication()).getTracker(
TrackerName.APP_TRACKER);
// Set screen name.
t.setScreenName("MainScreen");
// Send a screen view.
t.send(new HitBuilders.ScreenViewBuilder().build());
//................
我的清单:
//................
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:name=".MyApplication"> <!-- replace with your app class-->
android:allowBackup="true"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:largeHeap="true"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.facebook.sdk.ApplicationId"
//................
您需要让 Android 知道您希望它使用您的自定义应用程序实现而不是默认 android.app.Application
。为此,您需要将 android:name="<your-app-class>"
属性添加到 AndroidManifest.xml:
<manifest>
...
<application
android:name=".MyApplication"> <!-- replace with your app class-->
...
</application>
</manifest>