Отображение фрагмента сетки рядом с фрагментом карты, загрузка изображений с SD-карты - PullRequest
0 голосов
/ 19 января 2012

Я сейчас работаю над приложением для Android. Я хочу иметь GridView в левой части экрана и MapView в правой части экрана (при условии, что макет является горизонтальным). GridView будет содержать фотографии, которые в настоящее время находятся на SD-карте, и при выборе будут извлечены теги exif и, если есть информация GPS, которые будут нацелены на представление карты.

В настоящее время я использую примера фрагмента карты Иназарука для отображения фрагмента карты.

Я расширяю Fragment и реализую LoaderManager.Callbacks в своем классе фрагментов сетки. Однако метод «getLoaderManager (). InitLoader» отображает ошибку, говоря, что класс PhotoGridFragment неприменим.

Текущий код для PhotoGridFragment:

public class PhotoGridFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor> {

// member variables for
private static final int PHOTO_LIST_LOADER = 0x01;
private SimpleCursorAdapter adapter;
private CursorLoader cursorLoader;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getLoaderManager().initLoader(PHOTO_LIST_LOADER, null, this);
    adapter = new SimpleCursorAdapter(
            getActivity().getApplicationContext(), R.layout.grid_item,
            null, new String[] { MediaStore.Images.Thumbnails.IMAGE_ID }, null,
            CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    return inflater.inflate(R.layout.grid_item, container, false);      
}



// Loader manager methods
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    String[] projection = { MediaStore.Images.Thumbnails._ID };
    CursorLoader cursorLoader = new CursorLoader(getActivity(),
            MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, projection,
            null, null, null);
    return cursorLoader;
}

public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
    adapter.swapCursor(cursor);
}

public void onLoaderReset(Loader<Cursor> cursor) {
    adapter.swapCursor(null);
}

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

По сути, я хочу знать: почему этот код не работает? И правильный ли мой метод получения изображений с SD-карты? Или это тоже неправильно?

1 Ответ

0 голосов
/ 19 января 2012

Это было решено.Я использовал классы фрагментов совместимости (например, android.support.v4.app.Fragment).Метод initLoader не принимает фрагмент совместимости в качестве параметра.После перехода на android.app.Fragment эта проблема была решена.

...