android.app.应用程序无法转换为 android.app.Activity

我正在尝试从另一个类更改一个,但是当我运行此代码时: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 是使用 getApplicationContext() 传递的扩展的主要活动;Activity

洛卡特

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)

答案 1

您正在传递应用程序而不是ContextActivity Context

getApplicationContext();

无论你在哪里通过它,或者相反。thisActivityName.this

由于您正在尝试将您传递(应用程序而不是您想象的活动)转换为ContextActivity

(Activity)

您会收到此异常,因为您无法将应用程序强制转换为,因为应用程序不是 的子类。ActivityActivity


答案 2

如果您的项目使用匕首,然后出现此错误,您可以在Android清单中添加此错误

   <application
        ...
        android: name = ".BaseApplication"
        ...> ...

推荐