不能够引用((MainActivity)getApplication())了解getTracker(MainActivity.TrackerName.APP_TRACKER)。 [英] Not able to reference ((MainActivity) getApplication()).getTracker(MainActivity.TrackerName.APP_TRACKER);

查看:290
本文介绍了不能够引用((MainActivity)getApplication())了解getTracker(MainActivity.TrackerName.APP_TRACKER)。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想谷歌分析在我的应用集成及继起的这里的教程一切都设置:

我有延伸活动,并贴有标签3片段,我初始化code在这一活动的MainActivity这样的:

 私有静态最后弦乐PROPERTY_ID =UA-XXXXXX;    //日志TAG
    私有静态最后弦乐TAG =MyApp的;    公共静态INT GENERAL_TRACKER = 0;    公共枚举TrackerName {
        APP_TRACKER,
        GLOBAL_TRACKER,
        ECOMMERCE_TRACKER,
    }    HashMap的< TrackerName,跟踪> mTrackers =新的HashMap< TrackerName,跟踪>();    公共MainActivity(){
        超();
    }    同步跟踪了解getTracker(TrackerName trackerId){
        如果(!mTrackers.containsKey(trackerId)){            Google分析分析= GoogleAnalytics.getInstance(本);
            跟踪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);        }
        返回mTrackers.get(trackerId);
    }

现在的标签之一,我试图做的:

 ((MainActivity)getApplication())了解getTracker(MainActivity.TrackerName.APP_TRACKER)。

不过,我得到以下内容:

无法从应用程序转换为MainActivity在code以上线。任何提示吗?我试图用它的片段具有以下签名:

 公共类FragmentTab1扩展片段


解决方案

如果你调用这个片段里,也许你需要调用getActivity呢?

 ((MainActivity)getActivity())了解getTracker(MainActivity.TrackerName.APP_TRACKER)。

I am trying to integrate Google Analytics in my application and following a tutorial from here Everything is setup:

I have a MainActivity which extends Activity and has three Tab Fragments attached, I initialize the code in this Activity like:

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);
    }

Now in one of the Tabs I am trying to do:

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

However I get the following:

Cannot cast from Application to MainActivity in the above line of code. Any hints? The fragment I am trying to use it in has the following signature:

public class FragmentTab1 extends Fragment

解决方案

If you are calling this inside the fragment, perhaps you need to call getActivity instead?

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

这篇关于不能够引用((MainActivity)getApplication())了解getTracker(MainActivity.TrackerName.APP_TRACKER)。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆