2013-06-19 4 views
1

Я знаю, что есть много общих вопросов, подобных этому, но я просто не могу найти решение. Когда я пытаюсь инициализировать мой загрузчик с помощью getLoaderManager().initLoader(LOADER_ID, null, this); Ошибка Метод initLoader (int, Bundle, LoaderManager.LoaderCallbacks) в типе LoaderManager не применим для аргументов (int, null, Gridview).LoaderManager не инициализируется ... проблема с getLoaderManager(). InitLoader

Это заставляет меня думать, что программа не признает, что Gridview реализует диспетчер загрузчика. Я не знаю, почему это и куда идти отсюда. Я пробовал играть с разными импортами, но это не сработало. Я также убедился, что у меня есть правильные загрузки для поддержки загрузчиков. Код, который я использую, приведен ниже.

package com.example.camerapreview; 

import android.support.v4.app.LoaderManager; 
import android.support.v4.app.LoaderManager.LoaderCallbacks; 
import android.support.v4.content.CursorLoader; 
import android.support.v4.content.Loader; 
import android.support.v4.widget.CursorAdapter; 

//Omissis imports 


public class Gridview extends Activity implements LoaderManager.LoaderCallbacks<Cursor>{  
    private static final String TAG = "Checking Database"; 
    private static final String TAG1 = "Checking Thumbnail"; 

    Cursor cursor; 
    int columnindexid; 
    int columnindexdata; 
    int videoidindex; 
    int videopathindex; 
    GridviewData entry; 
    GridView gridview; 
    VideoAdapter videoadapter; 
    Cursor curs; 

    ImageLoaderConfiguration config; 

    String[] mediaColumns = { 
     MediaStore.Video.Media._ID, 
     MediaStore.Video.Media.DATA, 
     MediaStore.Video.Media.TITLE, 
     MediaStore.Video.Media.MIME_TYPE 
    }; 

    private static final int LOADER_ID = 1; 
    int flags = 0; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.preview); 
     gridview = (GridView) this.findViewById(R.id.gridview); 


     cursor = getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, mediaColumns, null, null, null); 
     columnindexid = cursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID); 
     columnindexdata = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA); 

     entry = new GridviewData(this); 
     entry.open(); 

     getLoaderManager().initLoader(LOADER_ID, null, this); 
     DataEntry putitin = new DataEntry(entry, this); 
     putitin.execute(); 

     //the cursor used in the cursor adapater 
     curs = entry.adapterCursor(); 
     videoidindex = entry.Indexfinder(curs); 
     videopathindex = entry.Indexfinder2(curs); 

     config = new ImageLoaderConfiguration.Builder(this) 
         .imageDownloader(new BaseImageDownloader(this)) 
         .build(); 

     ImageLoader.getInstance().init(config); 
     Log.i(TAG, "Before set adapater"); 
     gridview.setAdapter(new VideoAdapter(this, curs, flags)); 
    } 
} 

EDIT:

@Override 
public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    String[] projection = { GridviewData.VIDEOID, GridviewData.VIDEOFILEPATH }; 
    return new CursorLoader(Gridview.this, MyContentProvider.CONTENT_URI, projection, null, null, null); 
} 

@Override 
public void onLoadFinished(Loader<Cursor> loader, Cursor c) { 
    cursoradapter.swapCursor(c); 
} 

@Override 
public void onLoaderReset(Loader<Cursor> loader) { 
    cursoradapter.swapCursor(null);  
} 
+0

Как вы реализуете остальные унаследованные функции? (onCreateLoader, onLoadFinished, onLoaderReset) – zozelfelfo

+0

Я только что редактировал сообщение – Papajohn000

+0

Я не вижу ничего странного, но импорт вашего loaderManager вам действительно нужна поддержка версии v4? mine - 'import android.app.LoaderManager.LoaderCallbacks;' – zozelfelfo

ответ

12

Ошибка вызвана вашим импорт:

import android.support.v4.app.LoaderManager; 
import android.support.v4.app.LoaderManager.LoaderCallbacks; 
import android.support.v4.content.CursorLoader; 
import android.support.v4.content.Loader; 
import android.support.v4.widget.CursorAdapter; 

они бы хорошо для FragmentActivity, но вы используете нормальный Activity поэтому они должны быть:

import android.app.LoaderManager; 
import android.app.LoaderManager.LoaderCallbacks; 
import android.content.CursorLoader; 
import android.content.Loader; 
import android.widget.CursorAdapter; 

Обратите внимание, что в этом случае ваш android:minSdkVersion должен быть 11. Если вам нужна совместимость с более низкими версиями, просто сохраните импорт, как есть, и используйте FragmentActivity.

+0

баллин! Спасибо за помощь – Papajohn000

+0

спасибо @rciovati :) –