AsyncLoader - 不接受 'this'
AsyncLoader - wont accept 'this'
这是对我提出的问题的跟进 。
我从 this tutorial 复制并粘贴了这段代码。当我将其粘贴到 Android Studio 时,content.getLoadManager.initLoader() 的 'this' 参数以红色突出显示并显示以下错误:
第三个参数类型错误。找到 'com.example.carl.loaderDemo.FooLoaderClient',需要:'android.app.LoaderManager.LoaderCallBacks
我之前已经 运行 了解过这个(先看 link)。我希望本教程能有所帮助,但我似乎在无休止地兜圈子!
谁能给我指出正确的方向?!
package com.example.carl.loaderdemo;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.AsyncTaskLoader;
import android.support.v4.content.Loader;
public class FooLoader extends AsyncTaskLoader {
public FooLoader(Context context, Bundle args) {
super(context);
// do some initializations here
}
public String loadInBackground() {
String result = "";
// ...
// do long running tasks here
// ...
return result;
}
}
class FooLoaderClient implements LoaderManager.LoaderCallbacks {
Activity context;
// to be used for support library:
// FragmentActivity context2;
public Loader onCreateLoader(int id, Bundle args) {
// init loader depending on id
return new FooLoader(context, args);
}
@Override
public void onLoadFinished(Loader loader, Object data) {
}
public void onLoaderReset(Loader loader) {
// ...
}
public void useLoader() {
Bundle args = new Bundle();
// ...
// fill in args
// ...
Loader loader =
context.getLoaderManager().initLoader(0, args, this);
// with support library:
// Loader loader =
// context2.getSupportLoaderManager().initLoader(0, args, this);
// call forceLoad() to start processing
loader.forceLoad();
}
}
错误信息截图:
您正在实施 android.support.v4.app.LoaderManager.LoaderCallbacks
,但客户期望 android.app.LoaderManager.LoaderCallbacks
。您需要在使用的加载器 API 中保持一致。
您的导入不匹配:
import android.support.v4.app.LoaderManager;
import android.support.v4.content.AsyncTaskLoader;
import android.support.v4.content.Loader;
但是你需要
import android.app.LoaderManager;
import android.content.AsyncTaskLoader;
import android.content.Loader;
您不能将支持库与 android 框架混合使用。或者,您可以继承 FragmentActivity
并改为调用 getSupportLoaderManager()
。
这是对我提出的问题的跟进
我从 this tutorial 复制并粘贴了这段代码。当我将其粘贴到 Android Studio 时,content.getLoadManager.initLoader() 的 'this' 参数以红色突出显示并显示以下错误:
第三个参数类型错误。找到 'com.example.carl.loaderDemo.FooLoaderClient',需要:'android.app.LoaderManager.LoaderCallBacks
我之前已经 运行 了解过这个(先看 link)。我希望本教程能有所帮助,但我似乎在无休止地兜圈子!
谁能给我指出正确的方向?!
package com.example.carl.loaderdemo;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.AsyncTaskLoader;
import android.support.v4.content.Loader;
public class FooLoader extends AsyncTaskLoader {
public FooLoader(Context context, Bundle args) {
super(context);
// do some initializations here
}
public String loadInBackground() {
String result = "";
// ...
// do long running tasks here
// ...
return result;
}
}
class FooLoaderClient implements LoaderManager.LoaderCallbacks {
Activity context;
// to be used for support library:
// FragmentActivity context2;
public Loader onCreateLoader(int id, Bundle args) {
// init loader depending on id
return new FooLoader(context, args);
}
@Override
public void onLoadFinished(Loader loader, Object data) {
}
public void onLoaderReset(Loader loader) {
// ...
}
public void useLoader() {
Bundle args = new Bundle();
// ...
// fill in args
// ...
Loader loader =
context.getLoaderManager().initLoader(0, args, this);
// with support library:
// Loader loader =
// context2.getSupportLoaderManager().initLoader(0, args, this);
// call forceLoad() to start processing
loader.forceLoad();
}
}
错误信息截图:
您正在实施 android.support.v4.app.LoaderManager.LoaderCallbacks
,但客户期望 android.app.LoaderManager.LoaderCallbacks
。您需要在使用的加载器 API 中保持一致。
您的导入不匹配:
import android.support.v4.app.LoaderManager;
import android.support.v4.content.AsyncTaskLoader;
import android.support.v4.content.Loader;
但是你需要
import android.app.LoaderManager;
import android.content.AsyncTaskLoader;
import android.content.Loader;
您不能将支持库与 android 框架混合使用。或者,您可以继承 FragmentActivity
并改为调用 getSupportLoaderManager()
。