kathleen55
kathleen55

Reputation: 341

android ImageView problems

I have this code, but I am having a problem. The app closed unfortunately, and I don't know what the problem is in this code.

My XML file consists of several ImageViews but I don't know why it closed... is it not possible to have many ImageViews?

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/a" />

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/b"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/c"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/d"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/e"/>

     <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/f"/>

      <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/g"/>     

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/h"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/i"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/j"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/k"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/l"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/m"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/n"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/o"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/p"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/q"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/r"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/s"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/t"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/u"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/v"/>

     <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/w"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/x"/>

    <ImageView 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/y"/>


</LinearLayout>


 </ScrollView>

Here's the LogCat:

03-12 11:37:55.481: E/AndroidRuntime(879): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.thesis.americansignlanguage/com.thesis.americansignlanguage.AlphabetTutorial}: android.view.InflateException: Binary XML file line #101: Error inflating class <unknown>
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.os.Looper.loop(Looper.java:137)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.app.ActivityThread.main(ActivityThread.java:5041)
03-12 11:37:55.481: E/AndroidRuntime(879):  at java.lang.reflect.Method.invokeNative(Native Method)
03-12 11:37:55.481: E/AndroidRuntime(879):  at java.lang.reflect.Method.invoke(Method.java:511)
03-12 11:37:55.481: E/AndroidRuntime(879):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-12 11:37:55.481: E/AndroidRuntime(879):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-12 11:37:55.481: E/AndroidRuntime(879):  at dalvik.system.NativeStart.main(Native Method)
03-12 11:37:55.481: E/AndroidRuntime(879): Caused by: android.view.InflateException: Binary XML file line #101: Error inflating class <unknown>
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.view.LayoutInflater.createView(LayoutInflater.java:613)
03-12 11:37:55.481: E/AndroidRuntime(879):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
03-12 11:37:55.481: E/AndroidRuntime(879):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.app.Activity.setContentView(Activity.java:1881)
03-12 11:37:55.481: E/AndroidRuntime(879):  at com.thesis.americansignlanguage.AlphabetTutorial.onCreate(AlphabetTutorial.java:12)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.app.Activity.performCreate(Activity.java:5104)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
03-12 11:37:55.481: E/AndroidRuntime(879):  ... 11 more
03-12 11:37:55.481: E/AndroidRuntime(879): Caused by: java.lang.reflect.InvocationTargetException
03-12 11:37:55.481: E/AndroidRuntime(879):  at java.lang.reflect.Constructor.constructNative(Native Method)
03-12 11:37:55.481: E/AndroidRuntime(879):  at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.view.LayoutInflater.createView(LayoutInflater.java:587)
03-12 11:37:55.481: E/AndroidRuntime(879):  ... 25 more
03-12 11:37:55.481: E/AndroidRuntime(879): Caused by: java.lang.OutOfMemoryError
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:502)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:355)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:785)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.content.res.Resources.loadDrawable(Resources.java:1965)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.widget.ImageView.<init>(ImageView.java:120)
03-12 11:37:55.481: E/AndroidRuntime(879):  at android.widget.ImageView.<init>(ImageView.java:110)
03-12 11:37:55.481: E/AndroidRuntime(879):  ... 28 more
03-12 11:37:57.390: I/Process(879): Sending signal. PID: 879 SIG: 9
03-12 11:37:58.420: E/Trace(949): error opening trace file: No such file or directory (2)

Upvotes: 1

Views: 1048

Answers (2)

Akshay
Akshay

Reputation: 6142

I tried your code with low quality images and it work fine. You should use custom Adapter class to load images dynamically. This example will help you to make it happen.

Upvotes: 0

Sami Eltamawy
Sami Eltamawy

Reputation: 10009

This is an outOfMemory problem that is happening because your are loading too much images in your application that exceeds the memory that the OS assigned to your application.

This problem may not occurs if your are using a high performance device or you are scaling your images.

Try to use Adapter to draw your images and to put them into your UI dynamically. The Adapter only draws the images that you are viewing into your screen currently. But in your code you are trying to load all the images at the beginning.

Here is an example how to use ListView with adapter to display images

Upvotes: 3

Related Questions