Я работаю с ListFragment, но у меня возникли некоторые проблемы с LoaderManager
Я делаю музыкальный проигрыватель, и я просто пытаюсь отображать имена исполнителей, используя ListFragment. Вот код:
import android.app.ListFragment;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.CursorAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class AlbumsFragment extends ListFragment implements
LoaderManager.LoaderCallbacks < Cursor > {
AlbumsAdapter mAdapter;
@
Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View myFragmentView = inflater.inflate(R.layout.tabs_list, container, false);
return myFragmentView;
}
@
Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mAdapter = new AlbumsAdapter(getActivity(), null);
setListAdapter(mAdapter);
getLoaderManager().initLoader(0, null, this);
}
static final String[] ALBUM_SUMMARY_PROJECTION = {
MediaStore.Audio.Albums._ID, MediaStore.Audio.Albums.ALBUM
};
public Loader < Cursor > onCreateLoader(int id, Bundle args) {
String select = null;
return new CursorLoader(getActivity(), MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, ALBUM_SUMMARY_PROJECTION, select, null, null);
}
public void onLoadFinished(Loader < Cursor > loader, Cursor data) {
mAdapter.swapCursor(data);
}
public void onLoaderReset(Loader < Cursor > loader) {
mAdapter.swapCursor(null);
}
}
Я получаю сообщение об ошибке: метод initLoader(int, Bundle, LoaderManager.LoaderCallbacks) в типе LoaderManager не применим для аргументов (int, null, AlbumsFragment)
2 ответа
Вы видели это в вашем импорте?
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.CursorAdapter;
Это означает, что вы используете версию поддержки LoaderManager.
Таким образом, вы должны заменить
getLoaderManager().initLoader(0, null, this);
С
getSupportLoadManager().initLoader(0, null, this);
Вы также должны использовать
import android.support.v4.app.ListFragment;
в настоящее время вы используете стандартный ListFragment, а не вспомогательный.