【问题标题】:Encountered this error while trying to code a thread: Not an enclosing class尝试编写线程时遇到此错误:不是封闭类
【发布时间】:2017-12-18 00:06:48
【问题描述】:

我有一个名为 AnnouncementsActivity 的类,并以这种方式在其 onCreate 函数中运行一个线程:

 new GetAnnouncements().execute();

但是,当我尝试编译代码时,我得到了这个错误:

 Error:(42, 59) error: not an enclosing class: AnnouncementsActivity

双击错误会跳转到GetAnnouncements类的doInBackground函数:

  Toast toast = Toast.makeText(AnnouncementsActivity.this, announcementsList.get(1).get("baslik"), 5);

我从 AnnouncementsActivity 执行线程,为什么它说 AnnouncementsActivity 不是一个封闭类?

【问题讨论】:

    标签: java android multithreading class android-studio


    【解决方案1】:

    enclosing 类是包含 inner 类的 outer 类。换句话说,这两个类都定义在同一个 java 文件中,而“内部”类定义在“外部”类中。

    无论您是否从另一个调用/创建它都不会使其成为封闭的 clsas。

    您没有显示足够的代码来显示您正在尝试执行的操作,但 AnnouncementsActivity.this 看起来非常错误。

    【讨论】:

      【解决方案2】:

      你是不是把里面的 Toast 改成 runonUIthread 然后解决你的问题。

      runOnUiThread(new Runnable() {
                       public void run() {
                           Toast.makeText(AnnouncementsActivity.this, announcementsList.get(1).get("baslik"), 5).show();
                      }
                  });
      

      在回复后尝试。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-31
        • 1970-01-01
        • 1970-01-01
        • 2015-09-15
        相关资源
        最近更新 更多