当前位置: 首页 > 面试题库 >

同一活动中的多个装载机

杜河
2023-03-14
问题内容

我有两个自定义的内置加载程序AsyncTaskLoader,我想在活动中使用这些加载程序。它们每个都返回不同类型的结果。要将我的活动用于回调,我必须实现两个接口:

implements LoaderCallbacks<GetSyncListDataResult>, LoaderCallbacks<ErrorResult>

但是,尝试在同一类中实现所需的方法,我最终遇到重复的方法错误和erasure(???)错误:

// Methods for the first loader
public Loader<GetSyncListDataResult> onCreateLoader(int ID, Bundle bundle) ...
public void onLoaderReset(Loader<GetSyncListDataResult> loader) ...
public void onLoadFinished(Loader<GetSyncListDataResult> loader, GetSyncListDataResult result) ...

// Methods for the second loader
public Loader<ErrorResult> onCreateLoader(int ID, Bundle bundle) ...
public void onLoaderReset(Loader<ErrorResult> loader) ...
public void onLoadFinished(Loader<ErrorResult> loader, ErrorResult result) ...

显然,这些方法存在冲突,我需要一种简单的方法来解决此问题。解决这个问题的正确方法是什么?


问题答案:

正确答案是根据@dymmeh的注释,即,不是为了Activity实现两个LoaderCallbacks接口,而是为了让活动 包含
两个LoaderCallbacks实现。例如:LoaderCallbacks在活动中初始化您的字段…

private LoaderCallbacks<GetSyncListDataResult> dataResultLoaderListener
  = new LoaderCallbacks<GetSyncListDataResult>() { ...methods here... };

private LoaderCallbacks<ErrorResult> errorResultLoaderListener
  = new LoaderCallbacks<ErrorResult>() { ...methods here... };

…并声明您的加载程序ID …

private static final int DATA_RESULT_LOADER_ID = 1;
private static final int ERROR_RESULT_LOADER_ID = 2;

…然后初始化您的装载机…

getLoaderManager().initLoader(DATA_RESULT_LOADER_ID, dataResultBundle, dataResultLoaderListener);
getLoaderManager().initLoader(ERROR_RESULT_LOADER_ID, errorResultBundle, errorResultLoaderListener);

…完成!



 类似资料:
  • 这是我的问题: 我想在一个活动中实现两个按钮。一个是计算BMI,另一个是检查时间。我希望用户能在同一个活动中看到两个按钮,这也取决于他们想做什么。(这些功能不是同时工作的,而是分开的。另外,我在这两个活动中都实现了返回主页的按钮。) 在Android模拟器中,消息来自“应用程序继续停止”。 以下是主要活动。java文件: 谢谢! 这些消息是我按下导致应用程序停止的按钮后的stacktrace:

  • 我有一个疑问,想澄清一些关于包含多个片段的活动的观点。 我有10个片段与一个活动(HomeActivity.java)相连;此活动包含一个导航抽屉和工具栏,带有多个图标,如搜索、添加、删除、后退按钮等。 我遵循的结构如下:, 用户点击抽屉菜单中的任何项目,我正在加载片段, 碎片加载- 我正在根据HomeActivity本身中的片段更改标题名称,基于工具栏。 我的导航抽屉项目只有一个片段,在frag

  • 我读过很多关于这方面的文章,但也有2012年或更早的文章。 (我只是打算从数据库中读取和插入一些数据。)

  • 问题内容: 我对android非常陌生,我正在尝试将用户输入的数据(他们的名字)发送到另一个活动。过去,我可以使用Intent在活动之间发送单行代码,但是我无法解决如何向两个不同的TextView发送两个不同的字符串。 这是到目前为止我的MainActivity代码: 我第二项活动MainGame的代码: 当我运行它时,我得到了两个TextView中都为“ name2”添加的内容。我需要做些什么来

  • 我在同一个活动中使用了两个时间选择器,让用户为特定任务选择开始时间和停止时间,我使用了支持库中可用的DialogFragment类,以向后兼容旧的Android版本。

  • 我有两个用于应用程序的根活动的意图过滤器 一个过滤器用于从启动器图标启动应用程序,另一个过滤器用于在用户触摸NFC标签时启动活动。 我希望当用户在应用程序的任何活动中按下HOME按钮时,下一次他按下启动器图标或触摸NFC标签时,应用程序必须恢复(每个应用程序都是如此)。 但这是正在发生的事情:当用户点击NFC标签时,第一个活动被启动。然后,他导航到进一步的活动。按回家。再次点击NFC标签,启动第一