首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能将android.app.Application转换为android.app.Activity

不能将android.app.Application转换为android.app.Activity
EN

Stack Overflow用户
提问于 2014-05-08 15:36:43
回答 10查看 149.3K关注 0票数 48

我试图从另一个类中更改一个LinearLayout,但是当我运行以下代码时:

代码语言:javascript
复制
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

代码语言:javascript
复制
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)
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2014-05-08 15:58:37

传递的是应用程序Context,而不是Activity Context

代码语言:javascript
复制
getApplicationContext();

无论您传递什么地方,都要传递thisActivityName.this

由于您试图将Context传递给Activity (应用程序不是您所认为的活动),所以

代码语言:javascript
复制
(Activity)

因为应用程序不是Activity的子类,所以不能将应用程序强制转换为Activity

票数 131
EN

Stack Overflow用户

发布于 2021-02-10 08:56:44

如果您的项目使用匕首,然后出现此错误,您可以将其添加到android清单中。

代码语言:javascript
复制
   <application
        ...
        android: name = ".BaseApplication"
        ...> ...
票数 16
EN

Stack Overflow用户

发布于 2019-03-22 16:48:15

在我的例子中,当我在一个从AppCompatActivity扩展的活动中,它没有工作(Activity) getApplicationContext (),我只是把this放在它的位置上。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23546303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档