adding frame animations android stack overflow error

892 views Asked by At

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);
}




}
1

There are 1 answers

1
dmon On BEST ANSWER

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