2015-07-30 2 views
0

Я пытаюсь получить строки местоположений из моего SQLiteTable, но я столкнулся с ошибкой компиляции, конструктор CursorLoader не определен.Конструктор CursorLoader не определен

@Override 
public Loader<Cursor> onCreateLoader(int arg0, 
    Bundle arg1) { 

    // Uri to the content provider LocationsContentProvider 
    Uri uri = LocationsContentProvider.CONTENT_URI; 

    // Fetches all the rows from locations table 

    //return new CursorLoader(null); 
    //(Context context, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) 

    /ERROR HERE 
    return new CursorLoader(this, null, null, null, null); 
} 

В LocationsContentProvider.java

/** A callback method which is invoked by default content uri */ 
@Override 
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { 

    if(uriMatcher.match(uri)==LOCATIONS){ 
     return mLocationsDB.getAllLocations(); 
    } 
    return null; 
} 

ответ

1

CursorLoader не имеет конструктора пять-параметров. Что еще более важно, вам необходимо предоставить Uri, указывающий на коллекцию на ContentProvider, которую вы пытаетесь запросить. Вы можете сказать, что последние четыре параметра: null, но добавьте Uri в качестве второго параметра к конструктору.

Возможно, вы захотите ознакомиться с the documentation for the six-parameter CursorLoader constructor, который вы будете использовать.

Также обратите внимание, что код в вашем первом фрагменте кода не будет компилироваться, так как вам не хватает запятой между двумя значениями null.

1

Cursor Loader конструктор получить следующее свойство:

public CursorLoader(Context context, Uri uri, String[] projection, String selection, 
      String[] selectionArgs, String sortOrder) { 
     super(context); 
     mObserver = new ForceLoadContentObserver(); 
     mUri = uri; 
     mProjection = projection; 
     mSelection = selection; 
     mSelectionArgs = selectionArgs; 
     mSortOrder = sortOrder; 
    } 

вы пропустите одно свойство. вы можете добавить один null или определить свой заказ и перейти к конструктору.

и, как сказал CommonsWar, вы должны пройти ваш URI в качестве второго аргумента,

+0

Добавлен еще один нуль, но есть та же самая ошибка. – Enovyne

+1

см. Мой ответ на редактирование или см. Ответ commonsWar, вы должны передать contentProvider Uri для конструктора в качестве второго параметра. –

+0

Не знаю, почему, но я забыл, что я все время использую фрагменты. Я просто изменил «this» на getActivity(), и ошибка исчезла. – Enovyne

Смежные вопросы