Java ImageView和ArrayList

Java ImageView和ArrayList,java,android,Java,Android,我正在写一个Android应用程序,但它崩溃了。代码如下: public class Images extends Activity { private ImageView d1; private ArrayList<Integer> listaImagenes=new ArrayList<Integer>(); @Override public void onCreate (Bundle savedInstanceState)

我正在写一个Android应用程序,但它崩溃了。代码如下:

public class Images extends Activity {

    private ImageView d1;
    private ArrayList<Integer> listaImagenes=new ArrayList<Integer>();
     @Override
     public void onCreate (Bundle savedInstanceState)
     {
         super.onCreate(savedInstanceState);
         this.rellenar();
          setContentView(R.layout.imagentonas);
          d1=(ImageView)findViewById(R.id.imagenes01);
          d1.setImageResource(listaImagenes.get(0));

     }
     private void rellenar()
     {
        listaImagenes.add(R.drawable.rosa1); 
        listaImagenes.add(R.drawable.imagencilla); 
     }
}
如果我将
listaImagenes.get(0)
更改为
listaImagenes.get(1)
,应用程序将崩溃。
我不知道为什么会发生这种情况……

所以,既然您从内存错误中得到了
,我想这与您试图加载的资源的大小有关。我想说的是,可能
rosa1
drawable是巨大的,而
imagencilla
drawable是较小的。这可以解释为什么在尝试加载
imagencilla
时不会崩溃,但在尝试加载
rosa1
时会崩溃


您应该验证APK中包含的
rosa1
drawable的大小,并尽可能缩小它。如果无法进行压缩,您可能必须想出一种自定义方法来加载资源,而不是尝试一次性将其全部解码到内存中。

您可以发布日志吗..错误是什么?ArrayYoutofBoundsException?@Lal
private ArrayList ListaiAgenes=new ArrayList()>05-16 14:21:13.792: E/dalvikvm-heap(887): Out of memory on a
> 69120016-byte allocation. 05-16 14:21:13.882: E/AndroidRuntime(887):
> FATAL EXCEPTION: main 05-16 14:21:13.882: E/AndroidRuntime(887):
> Process: com.example.terceraniversario, PID: 887 05-16 14:21:13.882:
> E/AndroidRuntime(887): java.lang.OutOfMemoryError 05-16 14:21:13.882:
> E/AndroidRuntime(887):    at
> android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 05-16
> 14:21:13.882: E/AndroidRuntime(887):  at
> android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
> 05-16 14:21:13.882: E/AndroidRuntime(887):    at
> android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:422)
> 05-16 14:21:13.882: E/AndroidRuntime(887):    at
> android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
> 05-16 14:21:13.882: E/AndroidRuntime(887):    at
> android.content.res.Resources.loadDrawable(Resources.java:2110) 05-16
> 14:21:13.882: E/AndroidRuntime(887):  at
> android.content.res.Resources.getDrawable(Resources.java:700) 05-16
> 14:21:13.882: E/AndroidRuntime(887):  at
> android.widget.ImageView.resolveUri(ImageView.java:638) 05-16
> 14:21:13.882: E/AndroidRuntime(887):  at
> android.widget.ImageView.setImageResource(ImageView.java:367) 05-16
> 14:21:13.882: E/AndroidRuntime(887):  at
> com.example.terceraniversario.Images.onCreate(Images.java:20) 05-16
> 14:21:13.882: E/AndroidRuntime(887):  at
> android.app.Activity.performCreate(Activity.java:5231) 05-16
> 14:21:13.882: E/AndroidRuntime(887):  at
> android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
> 05-16 14:21:13.882: E/AndroidRuntime(887):    at
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
> 05-16 14:21:13.882: E/AndroidRuntime(887):    at
> android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
> 05-16 14:21:13.882: E/AndroidRuntime(887):    at
> android.app.ActivityThread.access$800(ActivityThread.java:135) 05-16
> 14:21:13.882: E/AndroidRuntime(887):  at
> android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
> 05-16 14:21:13.882: E/AndroidRuntime(887):    at
> android.os.Handler.dispatchMessage(Handler.java:102) 05-16
> 14:21:13.882: E/AndroidRuntime(887):  at
> android.os.Looper.loop(Looper.java:136) 05-16 14:21:13.882:
> E/AndroidRuntime(887):    at
> android.app.ActivityThread.main(ActivityThread.java:5017) 05-16
> 14:21:13.882: E/AndroidRuntime(887):  at
> java.lang.reflect.Method.invokeNative(Native Method) 05-16
> 14:21:13.882: E/AndroidRuntime(887):  at
> java.lang.reflect.Method.invoke(Method.java:515) 05-16 14:21:13.882:
> E/AndroidRuntime(887):    at
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
> 05-16 14:21:13.882: E/AndroidRuntime(887):    at
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 05-16
> 14:21:13.882: E/AndroidRuntime(887):  at
> dalvik.system.NativeStart.main(Native Method) 05-16 14:22:16.452:
> E/dalvikvm-heap(1167): Out of memory on a 69120016-byte allocation.
> 05-16 14:22:16.542: E/AndroidRuntime(1167): FATAL EXCEPTION: main
> 05-16 14:22:16.542: E/AndroidRuntime(1167): Process:
> com.example.terceraniversario, PID: 1167 05-16 14:22:16.542:
> E/AndroidRuntime(1167): java.lang.OutOfMemoryError 05-16 14:22:16.542:
> E/AndroidRuntime(1167):   at
> android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 05-16
> 14:22:16.542: E/AndroidRuntime(1167):     at
> android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
> 05-16 14:22:16.542: E/AndroidRuntime(1167):   at
> android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:422)
> 05-16 14:22:16.542: E/AndroidRuntime(1167):   at
> android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
> 05-16 14:22:16.542: E/AndroidRuntime(1167):   at
> android.content.res.Resources.loadDrawable(Resources.java:2110) 05-16
> 14:22:16.542: E/AndroidRuntime(1167):     at
> android.content.res.Resources.getDrawable(Resources.java:700) 05-16
> 14:22:16.542: E/AndroidRuntime(1167):     at
> android.widget.ImageView.resolveUri(ImageView.java:638) 05-16
> 14:22:16.542: E/AndroidRuntime(1167):     at
> android.widget.ImageView.setImageResource(ImageView.java:367) 05-16
> 14:22:16.542: E/AndroidRuntime(1167):     at
> com.example.terceraniversario.Images.onCreate(Images.java:20) 05-16
> 14:22:16.542: E/AndroidRuntime(1167):     at
> android.app.Activity.performCreate(Activity.java:5231) 05-16
> 14:22:16.542: E/AndroidRuntime(1167):     at
> android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
> 05-16 14:22:16.542: E/AndroidRuntime(1167):   at
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
> 05-16 14:22:16.542: E/AndroidRuntime(1167):   at
> android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
> 05-16 14:22:16.542: E/AndroidRuntime(1167):   at
> android.app.ActivityThread.access$800(ActivityThread.java:135) 05-16
> 14:22:16.542: E/AndroidRuntime(1167):     at
> android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
> 05-16 14:22:16.542: E/AndroidRuntime(1167):   at
> android.os.Handler.dispatchMessage(Handler.java:102) 05-16
> 14:22:16.542: E/AndroidRuntime(1167):     at
> android.os.Looper.loop(Looper.java:136) 05-16 14:22:16.542:
> E/AndroidRuntime(1167):   at
> android.app.ActivityThread.main(ActivityThread.java:5017) 05-16
> 14:22:16.542: E/AndroidRuntime(1167):     at
> java.lang.reflect.Method.invokeNative(Native Method) 05-16
> 14:22:16.542: E/AndroidRuntime(1167):     at
> java.lang.reflect.Method.invoke(Method.java:515) 05-16 14:22:16.542:
> E/AndroidRuntime(1167):   at
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
> 05-16 14:22:16.542: E/AndroidRuntime(1167):   at
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 05-16
> 14:22:16.542: E/AndroidRuntime(1167):     at
> dalvik.system.NativeStart.main(Native Method) 05-16 14:22:35.702:
> E/dalvikvm-heap(1210): Out of memory on a 69120016-byte allocation.
> 05-16 14:22:35.782: E/AndroidRuntime(1210): FATAL EXCEPTION: main
> 05-16 14:22:35.782: E/AndroidRuntime(1210): Process:
> com.example.terceraniversario, PID: 1210 05-16 14:22:35.782:
> E/AndroidRuntime(1210): java.lang.OutOfMemoryError 05-16 14:22:35.782:
> E/AndroidRuntime(1210):   at
> android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 05-16
> 14:22:35.782: E/AndroidRuntime(1210):     at
> android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
> 05-16 14:22:35.782: E/AndroidRuntime(1210):   at
> android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:422)
> 05-16 14:22:35.782: E/AndroidRuntime(1210):   at
> android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
> 05-16 14:22:35.782: E/AndroidRuntime(1210):   at
> android.content.res.Resources.loadDrawable(Resources.java:2110) 05-16
> 14:22:35.782: E/AndroidRuntime(1210):     at
> android.content.res.Resources.getDrawable(Resources.java:700) 05-16
> 14:22:35.782: E/AndroidRuntime(1210):     at
> android.widget.ImageView.resolveUri(ImageView.java:638) 05-16
> 14:22:35.782: E/AndroidRuntime(1210):     at
> android.widget.ImageView.setImageResource(ImageView.java:367) 05-16
> 14:22:35.782: E/AndroidRuntime(1210):     at
> com.example.terceraniversario.Images.onCreate(Images.java:20) 05-16
> 14:22:35.782: E/AndroidRuntime(1210):     at
> android.app.Activity.performCreate(Activity.java:5231) 05-16
> 14:22:35.782: E/AndroidRuntime(1210):     at
> android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
> 05-16 14:22:35.782: E/AndroidRuntime(1210):   at
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
> 05-16 14:22:35.782: E/AndroidRuntime(1210):   at
> android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
> 05-16 14:22:35.782: E/AndroidRuntime(1210):   at
> android.app.ActivityThread.access$800(ActivityThread.java:135) 05-16
> 14:22:35.782: E/AndroidRuntime(1210):     at
> android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
> 05-16 14:22:35.782: E/AndroidRuntime(1210):   at
> android.os.Handler.dispatchMessage(Handler.java:102) 05-16
> 14:22:35.782: E/AndroidRuntime(1210):     at
> android.os.Looper.loop(Looper.java:136) 05-16 14:22:35.782:
> E/AndroidRuntime(1210):   at
> android.app.ActivityThread.main(ActivityThread.java:5017) 05-16
> 14:22:35.782: E/AndroidRuntime(1210):     at
> java.lang.reflect.Method.invokeNative(Native Method) 05-16
> 14:22:35.782: E/AndroidRuntime(1210):     at
> java.lang.reflect.Method.invoke(Method.java:515) 05-16 14:22:35.782:
> E/AndroidRuntime(1210):   at
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
> 05-16 14:22:35.782: E/AndroidRuntime(1210):   at
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 05-16
> 14:22:35.782: E/AndroidRuntime(1210):     at
> dalvik.system.NativeStart.main(Native Method)