我是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);
}
}