Android Studio在OnRefreshListener中不接受“ this”作为LoaderCallBack参数

时间:2018-09-21 20:05:48

标签: android swiperefreshlayout android-loadermanager

我正在尝试向片段添加“滑动刷新布局”。我正在使用AsyncTaskLoader加载数据。在设置“刷新布局”的OnRefreshListener时,我想重新启动加载器以加载新数据(否则我应该做其他事情),但是我无法处理loaderCallBacks参数。如果我使用“ this”,它将给出错误。它说“找到OnRefreshListener,必需的LoaderManager.LoaderCallback”对象。 (我有OnCreateLoader,OnLoadFinished和OnLoaderReset。)

这是我的代码:

BaseActivity :AppCompatActivity

我的第二个问题是“ getloaderManager()”一词是删除线,告诉我它已被弃用。我该怎么办?

1 个答案:

答案 0 :(得分:0)

第一个问题:

设置侦听器时,您创建了OnRefreshListener的新匿名内部类实例,这意味着this是它的实例,而不是实现LoaderCallbacks的Fragment。 / p>

改为使用FragmentTopNews.this

getLoaderManager().restartLoader(NEWS_LOADER_ID, null, FragmentTopNews.this);

第二个问题:

android.app.Fragment及其相关类已在API 28中弃用。您应该改用android.support.v4.app版本。换句话说,更改您的进口。您还必须开始使用AppCompatActivity和getSupportFragmentManager()

编辑:

似乎支持文档已过时。我实际上必须去AOSP找到这个,但是Fragment#getLoaderManager()确实已被弃用。使用LoaderManager.getInstance(Fragment)