我试图从另一个类中更改一个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
上下文是扩展与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)发布于 2014-05-08 15:58:37
传递的是应用程序Context,而不是Activity Context
getApplicationContext();无论您传递什么地方,都要传递this或ActivityName.this。
由于您试图将Context传递给Activity (应用程序不是您所认为的活动),所以
(Activity)因为应用程序不是Activity的子类,所以不能将应用程序强制转换为Activity。
发布于 2021-02-10 08:56:44
如果您的项目使用匕首,然后出现此错误,您可以将其添加到android清单中。
<application
...
android: name = ".BaseApplication"
...> ...发布于 2019-03-22 16:48:15
在我的例子中,当我在一个从AppCompatActivity扩展的活动中,它没有工作(Activity) getApplicationContext (),我只是把this放在它的位置上。
https://stackoverflow.com/questions/23546303
复制相似问题