在我的应用项目中,我的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
答案 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'
}
}