hello can anybody help me please? I've created a layout with four image buttons and a text view under each image, the image buttons used to be images at res/drawables and added to android:src="eg" and it worked perfectly, until.. i recently learnt how to create frame by frame animations (I'm still quite new to this) so i added an animation to the background of the image buttons (removed android:src="eg") and used touchevent from android developer tutorials but later changed that so the image ran on start, and it worked beautifully so i wanted the other image buttons to follow suit. I'm using a .xml animation list and I've added each animation one at a time i added the second and it also ran fine but adding the third gives me a stack over flow error, i read here it could be because of nested viewgroups but changing the xml to display the animated imagebuttons accomplishes nothing, I've also tried taking all other code out and aggressively scaling back my images to no avail and trying to interpret my logcat leads me to believe its a java issue so im listing my logcat, xml layout, drawable xml (animationlist) and java file, thank you for any and all help.
Logcat
00:41:07.863 13090-13090/com.martinsapp.socialstories E/AndroidRuntime﹕
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.martinsapp.socialstories/com.martinsapp
.socialstories.animalsActivity}: android.view.InflateException: Binary XML file line
#29: Error inflating class <unknown>
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2224)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2274)
at android.app.ActivityThread.access$600(ActivityThread.java:150)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1276)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:5153)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #29:
Error inflating class <unknown>
at android.view.LayoutInflater.createView(LayoutInflater.java:613)
at
com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView
(PhoneLayoutInflater.java:56)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
at
com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:277)
at android.app.Activity.setContentView(Activity.java:1881)
at
com.martinsapp.socialstories.animalsActivity.onCreate(animalsActivity.java:28)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2188)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2274)at
android.app.ActivityThread.access$600
(ActivityThread.java:150)
at android.app.ActivityThread$H.handleMessage
(ActivityThread.java:1276)Â at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:5153)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:511)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:587)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView
(PhoneLayoutInflater.java:56)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at android.view.LayoutInflater.inflate(LayoutInflater.java:352)at
com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:277)
at android.app.Activity.setContentView(Activity.java:1881)
at com.martinsapp.socialstories.animalsActivity.onCreate(animalsActivity.java:28)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2188)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2274)
at android.app.ActivityThread.access$600(ActivityThread.java:150)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1276)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:5153)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
atcom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.StackOverflowError
at android.graphics.drawable.AnimationDrawable$AnimationState.<init>
(AnimationDrawable.java:319)
at android.graphics.drawable.AnimationDrawable.<init>
(AnimationDrawable.java:357)
at android.graphics.drawable.AnimationDrawable.<init>
(AnimationDrawable.java:87)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:910)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:864)
at android.content.res.Resources.loadDrawable(Resources.java:1977)
at android.content.res.Resources.getDrawable(Resources.java:666)
at android.graphics.drawable.AnimationDrawable.inflate
(AnimationDrawable.java:282)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:942)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:864)
at android.content.res.Resources.loadDrawable(Resources.java:1977)
at android.content.res.Resources.getDrawable(Resources.java:666)
at android.graphics.drawable.AnimationDrawable.inflate
(AnimationDrawable.java:282)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:942)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:864)
at android.content.res.Resources.loadDrawable(Resources.java:1977)
at android.content.res.Resources.getDrawable(Resources.java:666)
at android.graphics.drawable.AnimationDrawable.inflate
(AnimationDrawable.java:282)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:942)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:864)
at android.cont
xml layout
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linear_layout">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/linear_layout2">
<ImageButton
android:id="@+id/cat_button"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/cat_button"
android:src="@drawable/cat"
android:scaleType="centerCrop"
android:cropToPadding="true"
android:onClick="cat_image"/>
<ImageButton
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:contentDescription="@string/dog_button"
android:id="@+id/ImageView_dog"
android:background="@drawable/movingdogmoves"
android:scaleType="centerCrop"
android:onClick="dog_image"
android:cropToPadding="true" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linear_layout4">
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/cat_text"
android:text="@string/activity1_cat"
android:textSize="23sp"
android:textStyle="bold|italic"
android:layout_weight="1"
android:gravity="center" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/activity3_dog"
android:textSize="23sp"
android:id="@+id/textView"
android:layout_gravity="right|center_vertical"
android:textStyle="bold|italic"
android:layout_weight="1"
android:gravity="center" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/linear_layout3">
<ImageButton
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/duck_button"
android:layout_weight="1"
android:background="@drawable/movingduck"
android:id="@+id/ImageView"
android:scaleType="centerCrop"
android:cropToPadding="true"
android:onClick="duck_image"/>
<ImageButton
android:contentDescription="@string/cow_button"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_weight="1"
android:id="@+id/ImageView_cow"
android:scaleType="centerCrop"
android:cropToPadding="true"
android:onClick="cow_image"/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linear_layout5">
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/duck_text"
android:text="@string/activity2_duck"
android:textSize="23sp"
android:textStyle="bold|italic"
android:layout_weight="1"
android:gravity="center"
android:paddingBottom="5dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/activity4_cow"
android:textSize="23sp"
android:id="@+id/cow_text"
android:layout_gravity="right|center_vertical"
android:textStyle="bold|italic"
android:layout_weight="1"
android:gravity="center"
android:paddingBottom="5dp" />
</LinearLayout>
</LinearLayout>
drawable animation xml (i have three of these all are almost identical listing almost identical images)
<animation-list
android:id="@+id/movingdog"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/movingdogmoves" android:duration="150"/>
<item android:drawable="@drawable/movingdog1" android:duration="150"/>
<item android:drawable="@drawable/movingdog2" android:duration="150"/>
<item android:drawable="@drawable/movingdog3" android:duration="150"/>
<item android:drawable="@drawable/movingdog4" android:duration="150"/>
<item android:drawable="@drawable/movingdog5" android:duration="150"/>
<item android:drawable="@drawable/movingdog6" android:duration="150"/>
<item android:drawable="@drawable/movingdog7" android:duration="150"/>
<item android:drawable="@drawable/movingdog8" android:duration="150"/>
</animation-list>
Java file
package com.martinsapp.socialstories;
import android.content.Intent;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.graphics.drawable.AnimationDrawable;
public class animalsActivity extends Activity {
ImageButton imageButton;
ImageButton imageButton2;
ImageButton imageButton3;
ImageButton imageButton4;
Button button;
AnimationDrawable movingDuck;
AnimationDrawable movingCow;
AnimationDrawable movingDog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_animals);
imageButton=(ImageButton)findViewById(R.id.cat_button);
imageButton2=(ImageButton)findViewById(R.id.dog_button);
imageButton3=(ImageButton)findViewById(R.id.imageView);
imageButton4=(ImageButton)findViewById(R.id.cow_button);
button=(Button)findViewById(R.id.button_next);
ImageView movingduck = (ImageView) findViewById(R.id.ImageView);
movingduck.setBackgroundResource(R.drawable.movingduck);
movingDuck = (AnimationDrawable) movingduck.getBackground();
movingDuck.start();
ImageView movingcow = (ImageView) findViewById(R.id.ImageView_cow);
movingcow.setBackgroundResource(R.drawable.movingcow);
movingCow = (AnimationDrawable) movingcow.getBackground();
movingCow.start();
ImageView movingdog = (ImageView) findViewById(R.id.ImageView_dog);
movingcow.setBackgroundResource(R.drawable.movingdogmoves);
movingDog = (AnimationDrawable) movingdog.getBackground();
movingDog.start();
}
public void cat_image(View view){
Intent intent = new Intent(this, CatActivity.class);
startActivity(intent);
}
public void dog_image(View view){
Intent intent = new Intent(this, DogActivity.class);
startActivity(intent);
}
public void cow_image(View view){
Intent intent = new Intent(this, CowActivity.class);
startActivity(intent);
}
public void duck_image(View view){
Intent intent = new Intent(this, duckActivity.class);
startActivity(intent);
}
}
The only thing I can think of is that you're recursively referencing the same drawable XML here:
<item android:drawable="@drawable/movingdogmoves" android:duration="150"/>
.Is this inside the
movingdogmoves.xml
? That would cause a stack overflow