1

私は自分のアプリケーションに Google アナリティクスを統合しようとしており、ここからのチュートリアルに従っていますすべてがセットアップされています:

アクティビティを拡張し、3 つのタブ フラグメントが接続された MainActivity があり、このアクティビティのコードを次のように初期化します。

private static final String PROPERTY_ID = "UA-xxxxxx";

    //Logging TAG
    private static final String TAG = "MyApp";

    public static int GENERAL_TRACKER = 0;

    public enum TrackerName {
        APP_TRACKER, 
        GLOBAL_TRACKER, 
        ECOMMERCE_TRACKER,
    }

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

    public MainActivity() {
        super();
    }

    synchronized Tracker getTracker(TrackerName trackerId) {
        if (!mTrackers.containsKey(trackerId)) {

            GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
            Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(R.xml.app_tracker)
                    : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(PROPERTY_ID)
                            : analytics.newTracker(R.xml.ecommerce_tracker);
                    mTrackers.put(trackerId, t);

        }
        return mTrackers.get(trackerId);
    }

今、私がやろうとしているタブの1つで:

((MainActivity) getApplication()).getTracker(MainActivity.TrackerName.APP_TRACKER);

ただし、次のようになります。

上記のコード行では、Application から MainActivity にキャストできません。ヒントはありますか?私が使用しようとしているフラグメントには、次の署名があります。

public class FragmentTab1 extends Fragment
4

1 に答える 1

3

これをフラグメント内で呼び出している場合、代わりに getActivity を呼び出す必要があるのではないでしょうか?

((MainActivity) getActivity()).getTracker(MainActivity.TrackerName.APP_TRACKER); 
于 2014-09-03T07:42:51.420 に答える