简体   繁体   中英

ViewPager Fragment displaying Memory Error for loading ImageViews

I have a ViewPager with a Fragment coming from a PagerAdapter . The Fragment has 4 ImageViews which I want to set their backgrounds with images located in my Drawable folder. The drawables are about 80dp with size about 30kb each. I used the following to populate my ImageViews , where MyIMGS is an array of ImageViews .

switch (Mynum)
{
case 0: 

    int Array1[] = args.getIntArray("Array_A");
    for(int i=0;i<Array1.length;i++)
    {
        MyIMGS[i].setBackgroundResource(Array1[i]);

    }
    break;
case 1:
    int Array2[] = args.getIntArray("Array_A");
    for(int i=0;i<Array2.length;i++)
    {
        MyIMGS[i].setBackgroundResource(Array2[i]);

    }
    break;
    }

The First Problem is that after an intensive back and forth with back pressed a nice message outofMemory is displayed after a while. I tried the following solution

private static Bitmap decodeResource(Resources res, int resId ,int reqWidth,int reqHeight)
{
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);

// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res, resId, options);

}

And

IMGS[i].setImageBitmap(decodeResource(getResources(), Array1[i], 100, 100));

By using the above the NEW problem is that my 20 images from Drawable folder are displayed one on top of another on the 4 imageviews. Its like the For Loop is executed not for the MyIMGS array but and for each element separately!?. My Questions are : For such small files do I need the decode Resource, and If yes why Images are displayed in such a way.

I suspect the array elements of MyIMGS is an ImageView defined in the same location. Perhaps you should post the code for MyIMGS and its layout xml file.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM