我正在製作一個應用程序,它使用AsyncTask來選擇3個圖庫。 我的AsyncTask的含量>是:Android在檢索圖像時給出了空指針
public class ShoppingGallery extends AsyncTask<Void, Void, List<Bitmap>> {
private Activity activity;
private static final String LOG_TAG = ShoppingGallery.class.getSimpleName();
private Uri uri = MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI;
private String[] projection = {MediaStore.Images.Thumbnails.DATA};
private Cursor imageCursor;
public ShoppingGallery(Activity activity){
this.activity = activity;
imageCursor = activity.getContentResolver().query(uri, projection, null, null, null);
}
@Override
protected List<Bitmap> doInBackground(Void... params) {
List<Bitmap> imgs = new ArrayList<>();
while(imageCursor.moveToNext()){
try {
if(imgs.size() < 3)
imgs.add(MediaStore.Images.Media.getBitmap(activity.getContentResolver(), imageCursor.getNotificationUri()));
} catch (IOException e) {
Log.e(LOG_TAG, "problem with the image loading: " + e);
}
}
return imgs;
}
這對我來說似乎是好了,但是當我運行我的程序崩潰,並給出以下錯誤消息: 11月8日至13日:14:11.662 22360-22360/COM .example.jonas.shoppinglist E/ShoppingContacts:圖像執行失敗:
java.util.concurrent.ExecutionException: 顯示java.lang.NullPointerException:嘗試調用虛擬方法 「java.lang.String中android.net .Uri.getScheme()'爲空對象 參考
因此,檢測到問題。我的程序抱怨的行是:
imgs.add(MediaStore.Images.Media.getBitmap(activity.getContentResolver(), imageCursor.getNotificationUri()));
什麼是源和解決方案?
似乎imageCursor.getNotificationUri()返回null。檢查null並重試。 –
我調試過,並有一個我的遊標,mNotifyUri,這是一個參數爲null。這是怎麼回事? – Jonas