这是我问here的问题的后续跟进。
我已经从this tutoria升复制并粘贴了这段代码。当我将其粘贴到Android Studio中时,content.getLoadManager.initLoader()的'this'参数以红色突出显示,并显示以下错误:
错误的第三个参数类型。找到'com.example.carl.loaderDemo.FooLoaderClient',需要:'android.app.LoaderManager.LoaderCallBacks
我之前碰到过这个(见第一个链接)。我希望这个教程有所帮助,但我似乎只是在无休止的圈子里去了!
有人能指出我正确的方向吗?!
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();
}
}
错误消息的屏幕截图:
答案 0 :(得分:2)
您的导入不匹配:
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()
。
答案 1 :(得分:1)
您正在实施android.support.v4.app.LoaderManager.LoaderCallbacks
,但客户期待android.app.LoaderManager.LoaderCallbacks
。您需要在使用哪个加载器API时保持一致。