无法将android.app.Application强制转换为活动

无法将android.app.Application强制转换为活动,android,google-analytics,Android,Google Analytics,在我的应用程序项目中,我有一个类,它扩展了应用程序。(在我的例子中,这是AnalyticsApplication以便使用,但我的问题更一般。) 我创建了公共类AnalyticsApplication扩展应用程序,还将清单中的应用程序名称属性更改为android:name=“.AnalyticsApplication” 一切都进行得很顺利,直到我创建了另一个名为MyUIHelper的类,该类应该代表我的MainActivity执行许多UI更改 因此,我从MainActivity创建了助手: mUI

在我的应用程序项目中,我有一个
,它扩展了
应用程序
。(在我的例子中,这是
AnalyticsApplication
以便使用,但我的问题更一般。)

我创建了
公共类AnalyticsApplication扩展应用程序
,还将清单中的应用程序名称属性更改为
android:name=“.AnalyticsApplication”

一切都进行得很顺利,直到我创建了另一个名为MyUIHelper的
类,该类应该代表我的
MainActivity执行许多UI更改

因此,我从
MainActivity
创建了助手:

mUIHelper = new UIHelper(getApplicationContext());
MyUIHelper
构造函数是:

public class MyUIHelper {

    private MainActivity context

    public MyUIHelper(Context context) {
        this.context = (MainActivity) context;
    }


    private void makeUIChanges(int id) {
        context.findViewById(id);
        // ...
    }
}

问题是我得到了异常
java.lang.ClassCastException:com.MyApp.analytics无法将应用程序强制转换为com.MyApp.main活动
问题是您使用了它

getApplicationContext()
你把它转化为构造器中的活动

 public MyUIHelper(Context context) {
    this.context = (MainActivity) context;
}
这里的上下文是应用程序的上下文,因此不能强制转换为MainActivity

您应该使用活动的上下文

public class MyActivity extends Activity{
    void onCreate(...){
      //You can get context of activity here using 'this'
    }
}