我正在尝试从另一个类更改 LinearLayout
,但是当我运行此代码时:
public class IRC extends PircBot {
ArrayList<String> channels;
ArrayList<Integer> userCount;
ArrayList<String> topics;
LinearLayout channelLayout;
Context context;
public IRC(Context ctx) {
this.setName("xxxx");
channels = new ArrayList<String>();
userCount = new ArrayList<Integer>();
topics = new ArrayList<String>();
context = ctx;
channelLayout = (LinearLayout) ((Activity) context).findViewById(R.id.channels);
}
我得到一个 ClassCastException
context 是扩展 Activity
的主要活动,通过 getApplicationContext();
LOGCAT
05-08 17:53:55.102 3736-3799/g.d.allinonechat E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-5357
java.lang.ClassCastException: android.app.Application cannot be cast to android.app.Activity
at g.d.xxx.IRC.<init>(IRC.java:34)
at g.d.xxx.MainActivity$1.run(MainActivity.java:49)
at java.lang.Thread.run(Thread.java:856)
原文由 DomeWTF 发布,翻译遵循 CC BY-SA 4.0 许可协议
您正在传递应用程序
Context
而不是Activity Context
无论您在哪里通过它,都通过
this
或ActivityName.this
代替。由于您正在尝试投射
Context
您将(应用程序而不是您认为的活动)传递给Activity
与您收到此异常是因为您无法将 Application 转换为
Activity
因为 Application 不是Activity
的子类。