Reputation: 341
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
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
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