【问题标题】:An error when using the universal image loader使用通用图像加载器时出错
【发布时间】:2014-04-13 15:34:06
【问题描述】:

这是我第一次使用 Universal Image loader 库。

当我使用按钮触发 Web 图像的显示时发生错误。 相关代码如下:

public class MainActivity extends Activity {

ImageView iv;
Button btnButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    iv = (ImageView)findViewById(R.id.imageView1);
    btnButton = (Button)findViewById(R.id.button1);

    btnButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // dislpay a web image using a ImageView
            String url = "http://icons.iconarchive.com/icons/xenatt/minimalism/128/App-Json-Toolbox-icon.png";
             ImageLoader imageLoader = ImageLoader.getInstance();
            ImageLoaderConfiguration imgconfig = ImageLoaderConfiguration.createDefault(MainActivity.this);

            imageLoader.init(imgconfig);
            imageLoader.displayImage(url, iv);




        }
    });




}

但是,程序崩溃了。根据logcat,找到这句话的错误信息:

ImageLoaderConfiguration imgconfig = ImageLoaderConfiguration.createDefault(MainActivity.this);

我该如何解决这个错误?

【问题讨论】:

    标签: android image loader universal


    【解决方案1】:

    你首先在一个不扩展Application的类中初始化Image Loader?

    而在 logcat 中究竟是什么错误?

    【讨论】:

      【解决方案2】:

      像这样创建一个应用程序:

      import android.app.Application;
      
      import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
      import com.nostra13.universalimageloader.core.ImageLoader;
      import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
      import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
      
      public class CustomerApplication extends Application {
      
          @Override
          public void onCreate() {
              // TODO Auto-generated method stub
              super.onCreate();
      
              ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
                      getApplicationContext())
                      .threadPriority(Thread.NORM_PRIORITY - 2)
                      .denyCacheImageMultipleSizesInMemory()
                      .discCacheFileNameGenerator(new Md5FileNameGenerator())
                      .tasksProcessingOrder(QueueProcessingType.LIFO)
                      .writeDebugLogs() // Remove for release app
                      .build();
              // Initialize ImageLoader with configuration.
              ImageLoader.getInstance().init(config);
      
          }
      
          @Override
          public void onLowMemory() {
              // TODO Auto-generated method stub
              super.onLowMemory();
              ImageLoader.getInstance().clearMemoryCache();
              ImageLoader.getInstance().clearDiscCache();
          }
      }
      

      不要忘记在清单文件中声明这一点。

          <application
          android:name="yourpackagename.application name"
          android:allowBackup="true"
          android:icon="@drawable/ic_launcher"
          android:label="@string/app_name" >
          <activity
              android:name="Activity name"
              android:label="@string/app_name"
              android:screenOrientation="portrait"
              android:theme="@style/Theme.MyAwesomeTheme" >
              <intent-filter>
                  <action android:name="android.intent.action.MAIN" />
      
                  <category android:name="android.intent.category.LAUNCHER" />
              </intent-filter>
          </activity>
      

      并在 onCreate 上创建实例:

          @Override
      protected void onCreate(Bundle savedInstanceState) {
          // TODO Auto-generated method stub
          super.onCreate(savedInstanceState);
          setContentView(R.layout.view_my_card);
      
          mImageLoader = ImageLoader.getInstance();
      
                  mImageLoader.displayImage("Your Image URL", Your ImageView ,
              Options); // "Options if necessary";
      
          }
      

      在我的情况下,选项是:

      public static  DisplayImageOptions Options = new DisplayImageOptions.Builder()
                  .cacheInMemory(true).showImageOnFail(R.drawable.ic_launcher)
                  .showImageOnFail(R.drawable.ic_launcher)
                  .showImageOnLoading(R.drawable.ic_launcher).cacheOnDisc(true)
                  .bitmapConfig(Bitmap.Config.RGB_565).build();
      

      就是这样,你可以走了。

      【讨论】:

      • 感谢您的详细解答!我先创建一个自定义应用程序。但是,会出现新的错误。创建 MyApplication 时。错误信息是:“java.lang.NoClassDefFoundError: com.nostra13.universalimageloader.core.ImageLoaderConfiguration$Builder” 对这个bug有什么建议吗?
      • 你是否将jar文件导入到你的构建路径中?
      猜你喜欢
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      • 2013-05-12
      • 2013-01-29
      • 2016-06-23
      • 2013-09-16
      • 2012-10-23
      相关资源
      最近更新 更多