错误:(42,16)错误:需要不兼容的类型:Loader <list <string>&gt;实测值:FileLoader

时间:2016-12-21 13:07:15

标签: android

我正在尝试在我的代码中使用LoaderManager,但是我遇到了一个不兼容的类型错误:

      @Override
      public Loader<List<String>> onCreateLoader(int id, Bundle args) {
         return new FileLoader(MainActivity.this);
      }

这句话return new FileLoader(MainActivity.this)不应该返回一个Loader吗?这是 LoaderManager

的实现
     public class FileLoader extends AsyncTaskLoader<List<String>>{

       public FileLoader(Context context){
          super(context);
       }

       @Override
       public List<String> loadInBackground() {
          .........
          ........             
          return listFiles;
       }
    }

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题(需要不兼容的类型),但是看到您的帖子后,它可以帮助我学习更多。在我的代码中,它是导入的:

“导入androidx.loader.content.AsyncTaskLoader;”

,所以我将其更改为:

“导入android.content.AsyncTaskLoader;”

然后我的问题解决了。 因为“ AsyncTaskLoader”:此类在API级别28中已弃用,参见下面的参考。 https://developer.android.com/reference/android/content/AsyncTaskLoader

根据此建议,“您还应该考虑将现有项目迁移到AndroidX”,该页面如下: https://developer.android.com/jetpack/androidx/migrate/class-mappings

答案 1 :(得分:0)

最后我成功地解决了这个问题...那是在AsyncTaskLoader文件中导入支持库,而在Main文件中使用它...所以我刚刚删除了

    import android.content.AsyncTaskLoader; 

并导入以下支持库

    import android.support.v4.content.AsyncTaskLoader;