我目前正在开发Android应用程序。我希望在屏幕的左侧有一个GridView,在屏幕的右侧有一个MapView(假设布局是横向的)。 GridView将包含当前SD卡上的照片,选中后,将提取exif标签,如果有GPS信息,则将以地图视图为目标。
我目前正在使用inazaruk' Map Fragment Example来显示地图片段。
我正在扩展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卡中检索图像是否正确?或者这也错了?
答案 0 :(得分:0)
这已经解决了。我使用的是兼容性片段类(例如android.support.v4.app.Fragment)。 “initLoader”方法不将兼容性片段作为参数。更改为android.app.Fragment后,此问题已解决。