【问题标题】:call AsyncTask from static class从静态类调用 AsyncTask
【发布时间】:2012-07-12 04:47:05
【问题描述】:

我有一个静态类需要调用另一个,第一个是静态的,阻止我调用第二个并出现以下错误:

No enclosing instance of type Studies is accessible. Must qualify the allocation with an enclosing instance of type Studies (e.g. x.new A() where x is 
 an instance of Studies).

AsyncTask 类

    class DownloadFileAsync extends AsyncTask<String, String, String> {

        @Override
        protected void onPreExecute() {}

        @Override
        protected String doInBackground(String... aurl) {}
    }

静态类

     public static void startDownload(int id) {
         ERROR LINE--> new DownloadFileAsync().execute("SOME URL");
   }

谢谢!

【问题讨论】:

  • 看来您的问题不是AsyncTask 本身,而是未正确启动或在此范围内无法访问的研究对象。
  • 怎样才能做到无障碍?
  • 如果研究是非静态的,那么您可以将其作为参数传递给 startDownload
  • 研究是静态的:private static ArrayList研究;

标签: android android-asynctask static-class


【解决方案1】:

这是一个老问题,但如果有人仍然感兴趣,而不是在你的静态类中定义你的 AsyncTask,你可以在它自己的文件中定义它,这样就可以了。

【讨论】:

    【解决方案2】:

    你可以试试new Studies().new DownloadFileAsync().execute("SOME URL");

    但这并不完全是 OOP 风格

    【讨论】:

    • 系统服务在onCreate()之前对Activity不可用
    【解决方案3】:

    你看过这个答案吗? answe link

    【讨论】:

    • 我不明白如何将此解决方案应用于我的问题
    • getID 对于这种情况并不重要,p7 是一个 url
    猜你喜欢
    • 2015-10-17
    • 2016-04-05
    • 2023-03-15
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多