我是Android Studio开发的新手,我目前正在使用UniversalImageLoader来显示我的图像,但是当我从库中选择我的图像后,应用程序将崩溃 . 我不确定会发生什么,但这里是日志 .

D / SelectPhotoDialog:onActivityResult:image uri:content://com.android.providers.media.documents/document/image%3A77 D / UploadFragment:getImagePath:将图像设置为imageview D / AndroidRuntime:关闭VM E / AndroidRuntime :FATAL EXCEPTION:main进程:com.fyp.elvis.recapp,PID:3151 java.lang.RuntimeException:传递结果失败ResultInfo {who = null,request = 66770,result = -1,data = Intent {dat = content: //com.android.providers.media.documents/document/image:77 flg = 0x1}} to activity {com.fyp.elvis.recapp / com.fyp.elvis.recapp.HomeActivity}:java.lang.IllegalStateException: ImageLoader必须是init配置才能在android.app.ActivityThread.deliverResult(ActivityThread.java:4089)的android.app.ActivityThread.deleverResult(ActivityThread.java:4132)android.app.ActivityThread.-wrap20(ActivityThread . java)在Android.os上的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1533)android.os.Handler.dispatchMessage(Handler.java:102) . 位于android.app.ActivityThread.main(ActivityThread.java:6119)的looper.loop(Looper.java:154)位于com.android.internal.os.ZygoteInit $的java.lang.reflect.Method.invoke(Native Method) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)中的MethodAndArgsCaller.run(ZygoteInit.java:886)引起:java.lang.IllegalStateException:在com.nostra13中使用之前,ImageLoader必须是带配置的init位于com.nostra13.universalimageloader.core.ImageLoader.displayImage(ImageLoader.java:236)的com.nostra13.universalimageloader.core.ImageLoader.displayImage(ImageLoader.java)中的.universalimageloader.core.ImageLoader.checkConfiguration(ImageLoader.java:613) :209)在com.nypra13.universalimageloader.core.ImageLoader.displayImage(ImageLoader.java:316)的com.fyp.elvis.recapp.utilalImageLoader.setImage(UniversalImageLoader.java:46)com.fyp.elvis . recapp.UploadFragment.getImagePath(UploadFragment.java:31)at com.fyp.elvis.recapp.SelectPhotoDialog.onActivityResult(SelectPhotoDialog.java:68)在Android.app.ActivityThread.deliverResults(ActivityThread.java:4085)的android.app.Activity.dispatchActivityResult(Activity.java:6932)的android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:151)

以下是一些与UniversalImageLoader相关的代码 .

这是捕获图像路径并在手机屏幕上设置或显示图像的代码,我认为这里的问题是由控制台日志显示的 . 它在D / UploadFragment之后崩溃:getImagePath:将图像设置为imageview .

public class UploadFragment extends Fragment implements SelectPhotoDialog.OnPhotoSelectedListener{

private static final String TAG = "UploadFragment";

@Override
public void getImagePath(Uri imagePath) {
    Log.d(TAG, "getImagePath: setting the image to imageview");
    UniversalImageLoader.setImage(imagePath.toString(), mUploadImage);
    //assign to global variable
    mSelectedBitmap = null;
    mSelectedUri = imagePath;
}

我的UniversalImageLoader.java配置在这里 .

public class UniversalImageLoader {

private static final int defaultImage = R.drawable.camera_icon;
private Context mContext;

public UniversalImageLoader(Context context) {
    mContext = context;
}

public ImageLoaderConfiguration getConfig(){
    DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
            .showImageOnLoading(defaultImage)
            .showImageForEmptyUri(defaultImage)
            .showImageOnFail(defaultImage)
            .considerExifParams(true)
            .cacheOnDisk(true).cacheInMemory(true)
            .cacheOnDisk(true).resetViewBeforeLoading(true)
            .imageScaleType(ImageScaleType.EXACTLY)
            .displayer(new FadeInBitmapDisplayer(300)).build();

    ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(mContext)
            .defaultDisplayImageOptions(defaultOptions)
            .memoryCache(new WeakMemoryCache())
            .diskCacheSize(100 * 1024 * 1024).build();

    return configuration;
}

public static void setImage(String imgURL, ImageView image){

    ImageLoader imageLoader = ImageLoader.getInstance();
    imageLoader.displayImage(imgURL, image);
}

}