android.app.Application无法强制转换为Activity

时间:2015-09-28 02:24:23

标签: android google-analytics

在我的应用项目中,我的class扩展了Application。 (在我的情况下,这是AnalyticsApplication以便使用Google Analytics,但我的问题更为一般。)

我创建了public class AnalyticsApplication extends Application,还将清单中的应用程序名称属性更改为android:name=".AnalyticsApplication"

一切进展顺利,直到我创建另一个名为class的{​​{1}} MyUIHelper,代表我的MainActivity执行了许多用户界面更改。
所以从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.AnalyticsApplication cannot be cast to com.MyApp.MainActivity

1 个答案:

答案 0 :(得分:0)

问题是你用过

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'
    }
}