現在、Androidアプリケーションで作業しています。 GridViewを画面の左側に、MapViewを画面の右側に配置したいとします(レイアウトが横長であることを前提としています)。 GridViewには現在SDカードに保存されている写真が含まれており、選択するとexifタグが抽出され、GPS情報があればマップビューでターゲットになります。SDカードから画像をロードする、マップビューのフラグメントの横にグリッドビューのフラグメントを表示します。
現在、地図の一部を表示するには、inazarukのMap Fragment Exampleを使用しています。
私はグリッドフラグメントクラス内でFragmentを拡張し、LoaderManager.Callbackを実装しています。ただし、 "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カードから画像を取り出す私の方法は正しいですか?それとも間違っていますか?