【发布时间】:2019-09-13 21:00:26
【问题描述】:
以下错误
09-13 16:21:27.011 3048-3048/com.mobilprogramlar.viewpager_1 E/AndroidRuntime: FATAL EXCEPTION: main 进程:com.mobilprogramlar.viewpager_1,PID:3048 java.lang.OutOfMemoryError:无法分配 35389452 字节分配,16777216 可用字节和 27MB 直到 OOM 在 dalvik.system.VMRuntime.newNonMovableArray(本机方法) 在 android.graphics.BitmapFactory.nativeDecodeAsset(本机方法) 在 android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609) 在 android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) 在 android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1080) 在 android.content.res.Resources.loadDrawableForCookie(Resources.java:2635) 在 android.content.res.Resources.loadDrawable(Resources.java:2540) 在 android.content.res.Resources.getDrawable(Resources.java:806) 在 android.content.Context.getDrawable(Context.java:458) 在 androidx.core.content.ContextCompat.getDrawable(ContextCompat.java:463) 在 androidx.appcompat.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:203) 在 androidx.appcompat.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:191) 在 androidx.appcompat.content.res.AppCompatResources.getDrawable(AppCompatResources.java:102) 在 androidx.appcompat.widget.AppCompatImageHelper.setImageResource(AppCompatImageHelper.java:86) 在 androidx.appcompat.widget.AppCompatImageView.setImageResource(AppCompatImageView.java:94) 在 com.mobilprogramlar.viewpager_1.SliderAdapter.instantiateItem(SliderAdapter.java:51) 在 androidx.viewpager.widget.ViewPager.addNewItem(ViewPager.java:1010) 在 androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1224) 在 androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092) 在 androidx.viewpager.widget.ViewPager$3.run(ViewPager.java:273) 在 android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) 在 android.view.Choreographer.doCallbacks(Choreographer.java:670) 在 android.view.Choreographer.doFrame(Choreographer.java:603) 在 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 09-13 16:26:27.113 3048-3048/com.mobilprogramlar.viewpager_1 I/Process:发送信号。 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>
第一张图出来了。当我滑动屏幕时,第二张图片出来然后崩溃。
imageView.setImageResource(img[position]);行显示错误。
【问题讨论】:
-
请分享完整代码
-
导入androidx.appcompat.app.AppCompatActivity;导入androidx.viewpager.widget.ViewPager;导入android.os.Bundle;公共类 MainActivity 扩展 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)); } }
-
请分享slider_item的代码
标签: javascript android androidx