我正在尝试使用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.movi​​ecatalogue.GridViewAdapter.swapCursor(android.database.Cursor)”


在上面的代码中,游标c可以正确获取所有数据。但是我在NullPointerException中的swapCursor()上得到一个onLoadFinished()。我不明白我在做什么错。

最佳答案

您试图在swapCursor()上调用方法mAdapter,这时等于null。这将导致您看到NullPointerException。

若要解决此问题,请确保在方法调用之前正确设置了mAdapter

07-25 22:18