0
votes

error below

09-13 16:21:27.011 3048-3048/com.mobilprogramlar.viewpager_1 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.mobilprogramlar.viewpager_1, PID: 3048 java.lang.OutOfMemoryError: Failed to allocate a 35389452 byte allocation with 16777216 free bytes and 27MB until OOM at dalvik.system.VMRuntime.newNonMovableArray(Native Method) at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609) at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1080) at android.content.res.Resources.loadDrawableForCookie(Resources.java:2635) at android.content.res.Resources.loadDrawable(Resources.java:2540) at android.content.res.Resources.getDrawable(Resources.java:806) at android.content.Context.getDrawable(Context.java:458) at androidx.core.content.ContextCompat.getDrawable(ContextCompat.java:463) at androidx.appcompat.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:203) at androidx.appcompat.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:191) at androidx.appcompat.content.res.AppCompatResources.getDrawable(AppCompatResources.java:102) at androidx.appcompat.widget.AppCompatImageHelper.setImageResource(AppCompatImageHelper.java:86) at androidx.appcompat.widget.AppCompatImageView.setImageResource(AppCompatImageView.java:94) at com.mobilprogramlar.viewpager_1.SliderAdapter.instantiateItem(SliderAdapter.java:51) at androidx.viewpager.widget.ViewPager.addNewItem(ViewPager.java:1010) at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1224) at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092) at androidx.viewpager.widget.ViewPager$3.run(ViewPager.java:273) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) at android.view.Choreographer.doCallbacks(Choreographer.java:670) at android.view.Choreographer.doFrame(Choreographer.java:603) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 09-13 16:26:27.113 3048-3048/com.mobilprogramlar.viewpager_1 I/Process: Sending signal. PID: 3048 SIG: 9

package com.mobilprogramlar.viewpager_1;

import android.content.Context;
//import android.support.v4.view.PagerAdapter;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
import androidx.viewpager.widget.PagerAdapter;


public class SliderAdapter extends PagerAdapter {

    Context context;


    int[] img = {R.drawable.foraritdizi1,R.drawable.forbaginti,R.drawable.forbasit1,
            R.drawable.forbinom1,R.drawable.forbolme1,R.drawable.ic_launcher_foreground};

    public SliderAdapter(Context context) {
        this.context = context;
    }

    @Override
    public int getCount() {
        return img.length;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {

        return view == object;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {

        ImageView imageView;

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View itemView = inflater.inflate(R.layout.slider_item,container,false);

        imageView = itemView.findViewById(R.id.slider_image_view);

        Toast.makeText(context,"position:"+position,Toast.LENGTH_LONG).show();
        **imageView.setImageResource(img[position]);**
        //imageView.setImageResource(img.get(position).getImage_drawable());

        //imageView.setImageResource(img[position]);

        Log.d("tag","Image Position -> " + img[position]);
        container.addView(itemView);
        return itemView;

    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((LinearLayout) object);
    }
}

import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager_slider);

        viewPager.setAdapter(new SliderAdapter(MainActivity.this));
    }
}

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <!--android.support.v4.view.ViewPager-->
    <androidx.viewpager.widget.ViewPager
        android:id="@+id/view_pager_slider"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

The first picture comes out. When I slide the screen, the 2nd picture comes out and then crashes.

The imageView.setImageResource(img[position]); line shows an error.

1
share full code please - Emad Seliem
import androidx.appcompat.app.AppCompatActivity; import androidx.viewpager.widget.ViewPager; import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager_slider); viewPager.setAdapter(new SliderAdapter(MainActivity.this)); } } - nurullah
please share code for slider_item - Emad Seliem

1 Answers

0
votes

You are using big images size on

int[] img = {R.drawable.foraritdizi1,R.drawable.forbaginti,R.drawable.forbasit1,
            R.drawable.forbinom1,R.drawable.forbolme1,R.drawable.ic_launcher_foreground};

which cause java.lang.OutOfMemoryError. try to reduce those images size and on your manifest add

<application
        android:hardwareAccelerated="true"
        android:largeHeap="true"
        >