I'm having trouble following a guide on using SQLite in Android. I'm using a ListFragment
instead of a ListActivity
(as in the example), so I have the ListFragment
implement LoaderManager.LoaderCallbacks<Cursor>
instead. Then, in the fillData()
method in the ListFragment
:
private void fillData() { // Fields from the database (projection) // Must include the _id column for the adapter to work String[] from = new String[] { NotesSQLiteHelper.COLUMN_TITLE }; // Fields on the UI to which we map int[] to = new int[] { R.id.label }; getLoaderManager().initLoader(0, null, this); //error adapter = new SimpleCursorAdapter(getApplicationContext(), R.layout.notes_row, null, from, to, 0); setListAdapter(adapter); }
I get the error:
The method initLoader(int, Bundle, LoaderManager.LoaderCallbacks<D>) in the type LoaderManager is not applicable for the arguments (int, null, NotesActivity.ArrayListFragment)
on the marked line even though this
implements LoaderManager.LoaderCallbacks<Cursor>
.
Thank you for any ideas.
You are not using the right implementations of CursorLoader
and Loader
. Remove your old imports and use these ones:
import android.support.v4.app.LoaderManager; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; import android.support.v4.widget.CursorAdapter;
But I have the same Problem using SherlockActionBar: As I have to extend SherlockListActivity
there is NO method getSupportLoadManager()
.
Any ideas on this?
EDIT: follow this tutorial if you do not know how to use fragments. Create a new Class with extends SherlockFragment and move your display logic there. Make your old activity extend SherlockFragmentActivity and show the newly created SherlockFragment. This way I got it working. Thanks to @JakeWharton!
A few things to watch out for (from my recent experience battling with this):
If your minSDK is set to less than 11 (i.e. level 10 for Gingerbread) and you are using the Support Pack for backward compatibility, make sure you use
getSupportLoaderManager().initLoader(LOADER_ID, null, this);
You mentioned this when you said you are using ListFragment, but it bears repeating: Do not extend Activity, otherwise the support package will not work. Instead, extend the FragmentActivity class or the ListFragment class.
For your imports, make sure you are using the correct versions if your minSDK < 11:
android.support.v4.app.FragmentActivity; android.support.v4.app.LoaderManager; android.support.v4.content.Loader;
Hope this helps you... or at least someone else...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With