Грешка при използване на универсалното зареждане на изображения

Това е първият ми път, когато използвам библиотеката Universal Image loader.

Възниква грешка, когато използвам бутон, за да задействам показването на уеб изображение. Съответните кодове изглеждат така:

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);

Как мога да коригирам тази грешка?


person Donghui Sun    schedule 10.03.2014    source източник


Отговори (2)


Първо инициализирате Image Loader в клас, който разширява Application not?

А в logcat каква точно е грешката?

person ratoncolorao    schedule 10.03.2014

Създайте приложение като това:

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();

Това е, готово си.

person Rethinavel    schedule 10.03.2014
comment
благодаря за подробния отговор!Първо създавам персонализирано приложение. Възниква обаче нова грешка. когато MyApplication се създава. Информацията за грешката е:java.lang.NoClassDefFoundError: com.nostra13.universalimageloader.core.ImageLoaderConfiguration$Builder Някакви предложения за тази грешка? - person Donghui Sun; 10.03.2014
comment
Импортирал ли си jar файла в своя път за изграждане? - person Rethinavel; 13.03.2014