我正在尝试使用Cursor loader从DB中填充数据来填充UI。
下面是我的onCreateLoader()
@Override
public Loader < Cursor > onCreateLoader(int id, Bundle args) {
String sortingOrder = MovieContract.Movie.COLUMN_RATING + " ASC";
Uri uri = MovieContract.Movie.buildMovieDbUri();
Log.v(LOG_TAG, "URI: " + uri.toString() + " sorting: " + sortingOrder);
Cursor c = getActivity().getContentResolver().query(uri, MOVIE_PROJECTION, null, null, sortingOrder);
if (c.moveToFirst())
Log.v(LOG_TAG, "Movie ID: " + c.getInt(PROJ_MOVIE_ID - 1));
else
Log.v(LOG_TAG, "Fail");
CursorLoader cc = new CursorLoader(getActivity(),
uri,
MOVIE_PROJECTION,
null,
null,
sortingOrder);
return cc;
}
@Override
public void onLoadFinished(Loader < Cursor > loader, Cursor data) {
mAdapter.swapCursor(data);
}
例外
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“ android.database.Cursor itsme.com.moviecatalogue.GridViewAdapter.swapCursor(android.database.Cursor)”
在上面的代码中,游标c可以正确获取所有数据。但是我在
NullPointerException
中的swapCursor()
上得到一个onLoadFinished()
。我不明白我在做什么错。 最佳答案
您试图在swapCursor()
上调用方法mAdapter
,这时等于null。这将导致您看到NullPointerException。
若要解决此问题,请确保在方法调用之前正确设置了mAdapter
。